Здравствуйте, MTD, Вы писали:
MTD>Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>>Для начала, как работать с меню (menuBar)? Есть ли возможность загрузить меню целиком? Или сборка из отдельных элементов в рантайме это нормальная практика?
MTD>Да, это нормальная практика. Что не устраивает?
Получается очень большой объем ручной работы. Ну и приходится создавать невероятную прорву QAction.
Кроме того, у меня сложилось впечатление, что в QT MDI не очень поощряется, особенно с разнотипными документами, что требуется мне.
SVZ>>Или есть какие-то средства "автоматизации", не упомянутые в примерах? Типа карт сообщений в WTL/MFC?
MTD>Не в курсе, что это. Покажи, что хочется.
В WinAPI/MFC/WTL команда от тулбара или меню идентифицируется числовым идентификатором, который передается в виндовом сообщении WM_COMMAND.
Поэтому все команды легко свести к массиву/мапу указателей на интерфейсы или функции. При этом легко гонять все команды от одного обработчика к другому.
Например, в MFC команду можно обработать во вьюшке, Документе, главном окне приложения — сообщение передается по цепочке, пока кто-нибудь его не обработает.
Если в определенный момент желающих обработать не найдется, то ничего криминального не произойдет — команда похерится.
SVZ>>Если разные документы должны обрабатывать одну и ту же команду, например "Печать", где принято создавать соответствующий QAction?
SVZ>>В MainWindow? А как тогда передать обработку активному документу (использовать грядку из qobject_cast'ов)?
SVZ>>Или же создавать в каждом документе свою копию QAction'а? Не будут ли они конфликтовать в этом случае?
MTD>Это не имеет отношения к Qt — это вопрос к дизайну. Пример:
MTD>MTD>class AbstractData
MTD>{
MTD> virtual void Print() = 0;
MTD>};
MTD>void printAction()
MTD>{
MTD> CurrentData_->Print();
MTD>}
MTD>
Да, я думал про такое. Потому и решил спросить тех, кто использует QT в боевых условиях, что есть в фреймворке для решения моей задачи.
Оказалось, готовых решений нет и надо городить свой велосипед.
Спасибо тебе за разъяснения.