Динамическое меню QT4 в C ++ - PullRequest
       38

Динамическое меню QT4 в C ++

2 голосов
/ 09 декабря 2010

Я использую C ++ и QT4 в Linux. Я хочу добавить элементы в меню во время выполнения. Мой основной графический интерфейс, содержащий меню, был разработан с помощью QT Designer и настроен в первой строке кода ниже.

В конструкторе главного окна у меня есть следующий тестовый код, и он прекрасно компилируется. Однако новая строка подменю и ее элемент не отображаются при выполнении программы. Я предполагаю, что Qt нужно как-то обновить, чтобы обновить меню. Есть идеи?

 // Setup the user interface
 m_ui.setupUi(this);

 QMenu * iObjectsMenu = new QMenu(tr("Objects"), m_ui.menubar); //m_ui.menubar.menu_View->addMenu(tr("Objectz"));
 QAction * menu_testAction = new QAction(tr("Test"), m_ui.menubar);
 iObjectsMenu->addAction(menu_testAction);

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

То, как вы это делаете, вам нужно куда-то поместить меню, а вы этого не сделали.

Я делаю это немного по-другому.Когда вы создаете меню в дизайнере, у них есть указатели на элемент пользовательского интерфейса.Затем вы можете довольно легко управлять этим меню.

Например, я хотел меню, содержащее все панели инструментов и окна док-станции, которые можно показать / скрыть.Я посмотрел на код, который делает QMainWindow::createPopup() и сделал свою собственную внешнюю функцию construct_view_menu(QMainWindow * parent, QMenu * view_menu).Он вызывается во время инициализации главного окна с construct_view_menu(this, ui.menu_View).Функция просто добавляет больше меню и действий в это меню.Menu_View - это просто пустое меню, которое я создал вместе с дизайнером.

Я нашел этот самый простой способ сделать это, но вы также можете создавать новые меню, а затем добавлять или вставлять их в меню;это последний шаг, которым вы пренебрегли.

0 голосов
/ 09 декабря 2010

Я бы просто сгенерировал меню в вашем коде установки, а не в пользовательском интерфейсе, оставил бы переменную-член, которая указывает на QMenu (выделено с новым)

...