在Qt Designer中回调按钮?

时间:2010-01-31 12:31:55

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

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

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

2 个答案:

答案 0 :(得分:10)

菜单栏项目是操作对象。要在点击它们时执行某些操作,您需要从操作中捕获triggered() 信号。详细了解信号和广告位here

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

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

private slots:
  void clickMenuButton();

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

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

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

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

正如我之前所说,Qt也可以automatically connect signals to slots。这里的缺点似乎是您无法更改插槽的名称,但您也不需要连接它。

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

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

答案 1 :(得分:0)

为此,您需要添加QAction,将其添加到菜单中,将图标与其关联,然后为其创建回调。我正在使用VS Integration,因此我不知道如何在Creator中执行此操作的详细信息,但应该可以在不在代码中创建内容的情况下使用。

应该有某个动作编辑器。从那里你添加一个动作,然后右键单击它或其他东西,为它添加一个图标,然后拖动它做菜单,然后可能双击它为它创建一个插槽。这就是它至少在VS集成中的工作方式。