Qt:连接信号和插槽
Qt: Connecting signals and slots
我有一个MainWindow
,其中包含一个带有QTextEdit
的自定义小部件。我想在MainWindow
和QTextEdit
之间创建一个信号/插槽。
在MainWindow
,我有:
QObject::connect(ui->Header,
SIGNAL(ui->Header->getTextWidget()->textChanged()),
this, // this : MainWindow
SLOT(headerUpdated())); // Function of MainWindow
但这行不通。甚至有可能创建这样的信号/插槽组合吗?
何必呢——让Qt做所有的魔法:)只需像这样命名您的插槽(在主窗口中):
void on_<object name>_<signal name>(<signal parameters>);
大功告成。更多信息在这里: http://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName重要提示:"对象名称"部分表示对象的名称 - 而不是变量名称。如果你在QtDesigner中设计你的窗口,它应该被设置(在ui.setupUi方法中)。如果不是 - 手动设置(通过调用 setObjectName
只需注意插槽中的参数数量即可。这是我所做的:我只是复制信号原型(从标题或文档中 - 例如:http://doc.qt.io/qt-5/qabstractitemmodel.html#dataChanged - 再次注意"::"和方法名称之间的奇怪空格[某种牢不可破的零宽度空格] - 仅在从 v5.x 文档复制时出现),并在它前面加上 on_objectName_
.这保证了您的插槽可以将其连接到信号
相关文章:
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 升压信号2将插槽传递到成员功能以断开连接
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- C++ 信号和插槽不工作:插槽不响应事件
- QObject::连接无法将信号连接到*this*对象的插槽
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- QT5 信号不会激活插槽内的功能
- Qt5:连接:如果插槽的参数少于信号,如何使用"连接"
- Qt信号和插槽如果从QRunnable或其他线程调用,则不起作用
- C++Qt信号和插槽
- Qt moveToThread,带有参数的信号/插槽
- 当再次触发信号时,从Qt插槽执行的功能被第二次调用时会发生什么?
- 从 QWidgetList 访问 QWidget 子插槽/信号 (QList<QWidget*>)
- 两个对象QT之间的示例插槽/信号
- QT对象::连接:没有此类插槽信号到线程插槽
- Qt QAxWidget - WebBrowser手动设置插槽/信号
- 没有这样的插槽/信号(Qt)