Здравствуйте,
ищу совет, как правильно готовить 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'а? Не будут ли они конфликтовать в этом случае?