如何在Qt Creator中连接菜单点击操作?

Nat*_*man 45 qt action menu

我对Qt完全不熟悉.

我开始使用新的Qt4 GUI应用程序.

使用设计器,我创建了一个菜单,如下所示:

File
 - Exit
Run Code Online (Sandbox Code Playgroud)

如何获取与菜单项关联的操作?

我发现了一些名为"信号和插槽编辑器"但却不知道如何使用它的东西.

Isa*_*tto 48

选择信号插槽编辑器后,单击绿色加号.它将为您提供4个字段来填写.对于发件人,您可以选择创建信号的内容.例如,ActionExit可能是您为退出菜单项创建的名称.信号可能会被点击().接收器通常是您创建的具有所有方法的类.插槽是您在该类中创建的要执行的方法.例如:

actionExit clicked() <nameOfClass> exitGame()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 实际上你会想要选择triggered()因为它是一个动作.现在对于被调用的方法,它不需要任何参数,因此如果需要,可以将其称为void exitGame(). (3认同)
  • 好的,我有文件“mainwindow.cpp”和“mainwindow.h”。我添加了一个“void”函数,但当我选择“MainWindow”作为接收器时,它不会显示在插槽字段中......有什么想法吗? (2认同)
  • 你好,这是(评论#7)你是如何设法让插槽显示出来的吗?对我不起作用。如果您可以将完整的详细信息添加到答案本身中,我们将不胜感激:) 谢谢 (2认同)

小智 41

我设法以一种似乎更容易的方式做到这一点.在Qt Creator Action Editor窗口中,我看到了我单击的菜单项的条目.我单击该条目并选择"转到插槽..."然后从弹出窗口中选择triggered()并单击"确定".Qt Creator跳转到我刚刚添加的代码....我在那里放了一个qDebug语句,它有效!

  • 这个和被接受的答案之间的区别在于,这个答案专门针对菜单项创建了一个动作,并且接受的答案附加到任何预先指定的插槽,这两个方面都很有用. (2认同)

Dar*_*uct 5

转到插槽编辑器,然后单击左侧底部的“动作编辑器”选项卡。列出了所有菜单操作。

右键->go to Slot 提供插槽功能。


Sha*_*ili 5

我在这个很棒的论坛上看到过 2 可能是 3 种这样的问题,但每个问题都非常令人困惑,没有必要去信号/槽创建器,只需获取 Qt Designer 并按照以下步骤操作

1.在菜单栏上添加菜单和操作,并在 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()));