Добавление слотов в автоматически созданные пункты меню - PullRequest
1 голос
/ 02 сентября 2011

У меня есть существующее меню с именем «Сохранить», и в него я хочу добавить два меню: «Сохранить новое» и «Сохранить изменения».

QMenu *menu = new QMenu(this);
menu->addAction("Save New");//void saveNew()
menu->addAction("Save Edits");//void saveEdits()
ui.saveButton->setMenu(menu);

Я искал подходящую функцию и нашел ее, но мне нужна помощь в ее реализации.

QAction * QMenu::addAction ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 )

Как мне это сделать?

1 Ответ

7 голосов
/ 02 сентября 2011
menu->addAction("Save New", this, SLOT(saveNew()));

С теми же параметрами, которые вы использовали бы в этом вызове connect:

QAction *saveAction = menu->addAction("Save New");
connect(saveAction, SIGNAL(triggered()), this, SLOT(saveNew()));

Если меню было создано в конструкторе, вы можете подключить соответствующие действия, которые были созданы одновременно:

connect(ui.saveAction, SIGNAL(triggered()), this, SLOT(saveNew()));

или используйте редактор сигналов / слотов для непосредственного подключения действий из конструктора.

...