How to connect menu click with action in Qt Creator?

QtMenuAction

Qt Problem Overview


I am completely new to Qt.

I started with a new Qt4 GUI Application.

Using the designer, I have created a menu like so:

File
 - Exit

How do I get an action associated with the menu item?

I found something called the 'Signals and slots editor' but have no idea how to use it.

Qt Solutions


Solution 1 - Qt

Click on the green plus sign after you selected the signals Slots Editor. It will give you 4 fields to fill in. For sender you select what is creating the signal. For example ActionExit might be the name you created for the exit menu item. The signal is probably going to be clicked(). The receiver is usually the class that you created that has all of your methods. The slot is the method you created in that class that you want to execute. For example:

actionExit clicked() <nameOfClass> exitGame()

Hope this helps.

Solution 2 - Qt

I managed to do this in a way that seems much easier. In the Qt Creator Action Editor window, i see an entry for the menu item I clicked. I rt-click that entry and select "Go to slot..." then i select triggered() from the popup and click OK. Qt Creator jumps me to the code it just added.... I put a qDebug statement in there and it works!

Solution 3 - Qt

Go to the Slots Editor and then click on the Action Editor Tab on the bottem left side. There are all Menu Actions listed.

Right click -> go to Slot provides a slot function.

Solution 4 - Qt

I have seen 2 may be 3 this kind of questions on this great forum but every one is very confusing,there is no need to go to signal/slot creator just got Qt Designer and follow the following steps

1.add Menu and action on menu bar and add any function in the slot of your mainwindow.h file as following private slots: void help();

2.Secondly add the following code in your mainwindow.cpp.

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

3.same can be done for menus as well using following code:

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

4.You can get the desired results without going to Qt Designer as following.

  1. declare your action in your mainwindow.h as following

QAction *myaction;

  1. and add following code in your mainwindow.cpp

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNathan OsmanView Question on Stackoverflow
Solution 1 - QtIsawpalmettoView Answer on Stackoverflow
Solution 2 - Qtuser347524View Answer on Stackoverflow
Solution 3 - QtDarkproductView Answer on Stackoverflow
Solution 4 - QtShaikh ChiliView Answer on Stackoverflow