如何使用 Qt Creator 将按钮单击信号(“触发”信号)与工具栏中的用户按钮的动作/插槽功能连接起来?

Posted

技术标签:

【中文标题】如何使用 Qt Creator 将按钮单击信号(“触发”信号)与工具栏中的用户按钮的动作/插槽功能连接起来?【英文标题】:How to connect a button-click signal ("triggered" signal) with an action/slot function for a user button in a toolbar with Qt Creator? 【发布时间】:2011-03-17 16:08:54 【问题描述】:

之前在“***”论坛上看到过关于在 Qt Creator 下设计和开发的应用程序下设计和管理菜单和操作的现有讨论(请参阅“如何在 Qt Creator 中将菜单单击与操作连接起来?”:How to connect menu click with action in Qt Creator?) , 恐怕我对工具栏中的操作按钮有同样的疑问,我正在尝试使用 Qt 创建器创建和填充...

那么,我们走吧!

(1) 我在动作编辑器中创建了至少一个动作... (2) 我将该动作拖放到工具栏

(第 1 步和第 2 步都可以,这些都没有问题,虽然这对我来说是一种非常不常用的方法,因为其他 UIM 设计工具通常会建议相反的第 2 步和第 1 步来做同样的事情,即在我看来更“自然”,但是,我知道,在我们的软件设计和编程世界中存在并共存了很多东西......)

=> (3) 如何关联(连接)点击给定工具栏按钮时应该调用的函数(我将要实现的)?

我的意思是,如何将给定操作(工具栏按钮)的“触发”信号连接到稍后要实现的所需插槽(功能)......?是否可以使用 Qt Creator 中的“信号和插槽编辑器”来做这些事情,还是我必须自己在代码中的某个地方调用“connect()”来实现这一点?非常感谢您在这一点上为完美初学者提供的任何帮助/建议/详细示例...

事实上,我想知道是否可以不自己调用 connect() 来满足这种需要,Qt Creator 会自己创建插槽(函数)原型还是我们必须创建这样的插槽(函数)原型在 Qt Creator 考虑新的插槽(功能)原型并真正协助/帮助用户/开发人员完成这个通常/正常的 UIM 设计步骤/设计能力之前,我们自己来做......?

最好的问候。

阿兰-皮埃尔

【问题讨论】:

【参考方案1】:

如果QAction是你的窗口成员的话,那么正常

QMetaObject::connectSlotsByName(SettingsDialog);

...将动作的trigger 信号与适当命名的槽方法连接起来。这通常由使用设计器创建的 GUI 类自动调用。因此,例如,如果操作名为 actionSomething,则在您的 GUI 类中创建一个插槽,其签名如下:

void on_actionSomething_triggered();

...意味着您不必手动connect 信号和插槽。

此外,右键单击动作编辑器中的动作并选择“转到插槽...”将允许您为动作可能发出的任何信号创建插槽函数。

【讨论】:

以上是关于如何使用 Qt Creator 将按钮单击信号(“触发”信号)与工具栏中的用户按钮的动作/插槽功能连接起来?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 qt creator 的 main.cpp 中有一个计时器,以便在单击按钮时更新 GUI?

求问QT creator的table view一些问题……

如何将信号连接到插槽

QT Creator 中的 Slot 信号,connect() 函数在哪里?

在Qt Creator 和在 vs2012 里添加信号和槽

QT Creator - 删除元素的“没有匹配的信号”