在Qt Designer中回调按钮?

4 c++ qt qt-creator qt-designer

我今晚刚开始使用QtCreator,它似乎把所有接口内容放在ui文件中.我按照教程为我的图标创建了一个资源,然后我将它们添加到顶部的菜单栏中.

我需要在点击其中一个时建立连接,并且无法弄清楚如何为它进行回调.
我是否必须通过代码完全创建它们,或者是否有某种方法为它们添加回调(而不仅仅是让它们与其他对象交互).

Vee*_*eti 11

菜单栏项是操作对象.要在单击它们时执行某些操作,您需要捕获操作中的triggered() 信号.了解更多关于信号和槽这里.

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

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

private slots:
  void clickMenuButton();
Run Code Online (Sandbox Code Playgroud)

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

connect(ui.actionObject, SIGNAL(triggered()), this, SLOT(clickMenuButton()));
Run Code Online (Sandbox Code Playgroud)

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

就这样,clickMenuButton()只要点击动作就会被调用.

正如我之前所说,Qt还可以自动将信号连接到插槽.这里的缺点似乎是您无法更改插槽的名称,但您也不需要连接它.

Qt Creator支持为小部件创建插槽:在菜单操作的情况下,您应该转到表单设计器,您应该在表单中看到一系列操作(如果没有,请找到操作编辑器).右键单击所需的操作,然后按" 转到插槽...".在那里,双击triggered().

然后,Qt Creator将在您的代码编辑器中打开新的插槽,您可以在此处执行任何操作!