MDI & QT best practices
От: Stanislav V. Zudin Россия  
Дата: 18.08.11 06:46
Оценка:
Здравствуйте,
ищу совет, как правильно готовить MDI на QT.
Т.к. до сих пор работал с голым WinAPI, MFC и WTL, то QT выглядит несколько диковато.

Для начала, как работать с меню (menuBar)? Есть ли возможность загрузить меню целиком? Или сборка из отдельных элементов в рантайме это нормальная практика?

Применительно к MDI, если имеем несколько документов разного типа (например текстовый редактор и графический), как переключать меню при смене активного документа? Убивать все содержимое menuBar'а и лепить заново? Или есть метод поизящнее?

Собственно, те же вопросы и по использованию QAction.

Принято делать так?

    saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save..."), this);
    saveAct->setShortcuts(QKeySequence::Save);
    saveAct->setStatusTip(tr("Save the current form letter"));
    connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));

    printAct = new QAction(QIcon(":/images/print.png"), tr("&Print..."), this);
    printAct->setShortcuts(QKeySequence::Print);
    printAct->setStatusTip(tr("Print the current form letter"));
    connect(printAct, SIGNAL(triggered()), this, SLOT(print()));

    ... еще много-много раз...


Или есть какие-то средства "автоматизации", не упомянутые в примерах? Типа карт сообщений в WTL/MFC? Пока, кроме изобретения собственного велосипеда, ничего не нашел.

Если разные документы должны обрабатывать одну и ту же команду, например "Печать", где принято создавать соответствующий QAction?
В MainWindow? А как тогда передать обработку активному документу (использовать грядку из qobject_cast'ов)?
Или же создавать в каждом документе свою копию QAction'а? Не будут ли они конфликтовать в этом случае?
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.