c++ - Qt Designer 中按钮的回调?

标签 c++ qt qt-creator qt-designer

我今晚才开始使用 QtCreator,它似乎将所有界面内容都放在了 ui 文件中。我按照教程为我的图标创建资源,然后将它们添加到顶部的菜单栏。

虽然我需要在点击其中一个时建立连接,但不知道如何为它进行回调。
我是否必须通过代码完全创建它们,或者有什么方法可以为它们添加回调(而不是仅仅让它们与其他对象交互)。

最佳答案

菜单栏项是操作对象。要在单击它们时执行某些操作,您需要从操作中捕获 triggered() signal。阅读有关信号和槽的更多信息 here .

为此,您需要在 MainWindow 类中声明一个新的 slot。 Qt 还支持自动执行此操作,无需连接任何东西,但我更喜欢自己执行。如果您不感兴趣,请跳过此部分。

首先,我们在您的窗口类中声明一个新插槽:

private slots:
  void clickMenuButton();

然后,在您的构造函数中,您需要将触发信号连接到您的新插槽:

connect(ui.actionObject, SIGNAL(triggered()), this, SLOT(clickMenuButton()));

第一个参数是保存我们将要收听的信号的对象(您的菜单按钮)。第二个是信号的名称。第三个是持有接收槽的对象(在本例中为我们的窗口)。第四个是插槽。

就像这样,只要单击操作,就会调用 clickMenuButton()

前面说过,Qt也可以automatically connect signals to slots .这里的缺点似乎是您不能更改插槽的名称,但您也不需要连接它。

Qt Creator 支持为小部件创建插槽:对于菜单操作,您应该转到表单设计器,您应该在表单中看到操作列表(如果没有,请找到 Action 编辑器)。右键单击您想要的操作,然后按转到插槽...。在那里,双击 triggered()

Qt Creator 将在您的代码编辑器中打开新插槽,您可以在这里做任何您想做的事!

关于c++ - Qt Designer 中按钮的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171650/

相关文章:

c++ - 来自 2 个摄像头(用于立体视觉)的视频使用 OpenCV,但其中一个滞后

c++ - : 'std::ios_base& (*f)(std::ios_base&))' 是什么意思

qt - 如何在Qt Creator 中设置Qdialog 的固定高度尽可能小和扩展的宽度?

c++ - 如何从 Qt Creator 的 UI 设计器中的其他两个布局之间删除 Qt 布局?

c++ - 在 Qt Creator 中使用 Windows SDK 7.1

c++ - 如果在声明中使用了 __typeof__ 宏,是否可以访问结构成员?

C++ 宏 : order of precedence difference?

c++ - ITK-VTK vtkResliceImageViewer 未定义

c++ - 在 Qt Creator IDE 中创建表单

c++ - 如何在Qt中的特定坐标上显示图像?