Qt:连接信号和插槽

时间:2015-01-28 10:55:24

标签: c++ qt signals slot

我有一个MainWindow,其中包含一个自定义小部件,其中包含QTextEdit。 我想在MainWindowQTextEdit之间创建一个信号/广告位。

MainWindow我有:

QObject::connect(ui->Header,
        SIGNAL(ui->Header->getTextWidget()->textChanged()),
        this, // this : MainWindow
        SLOT(headerUpdated())); // Function of MainWindow

但这不起作用。甚至可以创建这样的信号/插槽组合吗?

1 个答案:

答案 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_作为前缀。这保证了你的插槽可以将它连接到信号