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

Posted

技术标签:

【中文标题】QT Creator 中的 Slot 信号,connect() 函数在哪里?【英文标题】:Signal to Slot in QT Creator, where is connect() function? 【发布时间】:2017-05-11 14:20:32 【问题描述】:

在 QT Creator 的设计模式中,我右键单击一个小部件并选择“转到插槽”,它会为小部件的信号之一创建一个插槽函数。 我原以为这会生成一个connect() 函数来创建此连接,但是,我在任何源代码中都找不到类似的东西。 将小部件的信号连接到槽函数的实际代码在哪里? 谢谢

【问题讨论】:

【参考方案1】:

如果您使用的是 QtCreator 的设计器,则其中一个输出是 .ui 文件

Qt Designer ui 文件是表单小部件树的 XML 表示,由 “用户界面编译器”uic 处理

Qt 的 ui 格式提供的功能之一是AutoConnect。

uic 自动在表单的setupUi() 函数中生成代码来连接您的信号和插槽。

其工作方式如下:

您的广告位必须符合以下格式:

void on_<object-name>_<signal-name>(<signal-parameters>);

其中object-name 是发出此插槽所针对的信号的对象的名称。

稍后,uic 会生成调用 QMetaObject::connectSlotsByName(this); 的代码

使用Qt的反射系统,找到QObject,其中objectName()=object-name,并将其信号连接到您的插槽。

【讨论】:

以上是关于QT Creator 中的 Slot 信号,connect() 函数在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

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

第十课初探Qt的消息处理

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

Qt UI Slot 不被从基类继承的信号调用

QT 信号和槽式如何实现的

QT 中 关键字讲解(emit,signal,slot)