Qt:连接信号和插槽

Qt: Connecting signals and slots

本文关键字:插槽 信号 连接 Qt      更新时间:2023-10-16

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

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_ .这保证了您的插槽可以将其连接到信号