【发布时间】:2017-05-11 14:20:32
【问题描述】:
在 QT Creator 的设计模式中,我右键单击一个小部件并选择“转到插槽”,它会为小部件的信号之一创建一个插槽函数。
我原以为这会生成一个connect() 函数来创建此连接,但是,我在任何源代码中都找不到类似的东西。
将小部件的信号连接到槽函数的实际代码在哪里?
谢谢
【问题讨论】:
标签: qt connect qt-signals slot
在 QT Creator 的设计模式中,我右键单击一个小部件并选择“转到插槽”,它会为小部件的信号之一创建一个插槽函数。
我原以为这会生成一个connect() 函数来创建此连接,但是,我在任何源代码中都找不到类似的东西。
将小部件的信号连接到槽函数的实际代码在哪里?
谢谢
【问题讨论】:
标签: qt connect qt-signals slot
如果您使用的是 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,并将其信号连接到您的插槽。
【讨论】: