我有一个MainWindow
,其中包含一个自定义小部件,其中包含QTextEdit
。
我想在MainWindow
和QTextEdit
之间创建一个信号/广告位。
在MainWindow
我有:
QObject::connect(ui->Header,
SIGNAL(ui->Header->getTextWidget()->textChanged()),
this, // this : MainWindow
SLOT(headerUpdated())); // Function of MainWindow
但这不起作用。甚至可以创建这样的信号/插槽组合吗?
答案 0 :(得分:3)
为什么要这么麻烦 - 让Qt做所有的魔术:)只需命名你的插槽(在mainWindow中):
void on_<object name>_<signal name>(<signal parameters>);
你已经完成了。更多信息:http://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName 重要的:&#34;对象名称&#34; part表示对象的名称 - 不是变量名称。如果您在QtDesigner中设计窗口,则应设置它(在ui.setupUi方法中)。如果不是 - 手动设置(通过调用setObjectName
请注意插槽中的参数数量。这就是我的工作:我只是复制信号原型(来自标题或文档 - 例如:http://doc.qt.io/qt-5/qabstractitemmodel.html#dataChanged - 再次注意&#34; ::&#34;之间的奇怪空白。方法名称[某种unbreakable-zerowidth-space] - 仅在从v5.x doc复制时出现),并以on_objectName_
作为前缀。这保证了你的插槽可以将它连接到信号