Как связать нажатие меню с действием в Qt Creator? - PullRequest
45 голосов
/ 28 апреля 2010

Я совершенно новичок в Qt.

Я начал с нового приложения Qt4 GUI.

Используя дизайнер, я создал меню так:

File
 - Exit

Как получить действие, связанное с элементом меню?

Я нашел то, что называется «Редактор сигналов и слотов», но не знаю, как его использовать.

Ответы [ 4 ]

47 голосов
/ 28 апреля 2010

Нажмите на зеленый знак плюс после того, как вы выбрали редактор сигналов Слоты. Это даст вам 4 поля для заполнения. Для отправителя вы выбираете, что создает сигнал. Например, ActionExit может быть именем, которое вы создали для пункта меню выхода. Сигнал, вероятно, будет нажат (). Обычно получатель - это созданный вами класс, в котором есть все ваши методы. Слот - это метод, который вы создали в этом классе и который хотите выполнить. Например:

actionExit clicked() <nameOfClass> exitGame()

Надеюсь, это поможет.

41 голосов
/ 22 мая 2010

Мне удалось сделать это намного проще. В окне редактора действий Qt Creator я вижу запись для пункта меню, на который я нажал. Я щелкаю эту запись и выбираю «Перейти к слоту ...», затем выбираю триггер () во всплывающем окне и нажимаю «ОК». Qt Creator подскакивает мне на код, который он только что добавил .... Я поместил туда оператор qDebug, и он работает!

4 голосов
/ 31 марта 2017

Перейдите в Редактор слотов и затем нажмите на вкладку Редактор действий в нижней части слева. Здесь перечислены все действия в меню.

Щелчок правой кнопкой мыши -> перейти к слоту обеспечивает функцию слота.

0 голосов
/ 27 июня 2019

Я видел 2, может быть, 3 вопроса такого рода на этом замечательном форуме, но каждый из них очень запутанный, нет необходимости идти к создателю сигнала / слота, только что получившего Qt Designer, и выполнить следующие шаги

1.add Меню и действие в строке меню и добавьте любую функцию в слот вашего файла mainwindow.h следующим образом private slots: void help();

2.Вторично добавьте следующий код в ваш mainwindow.cpp.

connect(ui->actionmyactions, SIGNAL(triggered()), this, SLOT(help()));

3. То же самое можно сделать для меню, используя следующий код:

connect(ui->menuHelp, SIGNAL(aboutToShow()), this, SLOT(help()));

4. Вы можете получить желаемые результаты, не переходя в Qt Designer следующим образом.

  1. объявите ваше действие в mainwindow.h как следующее

    QAction *myaction;

  2. и добавьте следующий код в ваш mainwindow.cpp

    myaction = ui->mainToolBar->addAction("help"); connect(myaction, SIGNAL(triggered()), this, SLOT(help()));

...