1

我对 QT 状态栏有疑问。我想从状态栏接收并处理 changeMes​​sage,我的插槽有问题。我应该如何编写正确的插槽或如何正确使用连接功能,我也有问题。

文件.cpp

connect(statusbar, SIGNAL(messageChanged(const QString &message)), this, SLOT(func1(const QString &message)));

在底部

void file::func1(const QString &message)
{
    statusBarElements->at(0)->setText(statusBarTextElements->at(0));
}

文件.h

private slots:

void func1(const QString &message);

我收到了消息

QMetaObject::connectSlotsByName: No matching signal for func1(QString)
4

1 回答 1

1

如果您正在使用Qt5,则不需要连接中的SIGNALandSLOT宏。

connect(statusbar, &QStatusBar::messageChanged, this, &file::func1);

如果签名不兼容,这将在编译时失败并给您一条错误消息。

编辑:正如@GM 在评论 QMetaObject::connectSlotsByName: No matching signal for func1(QString)中所说,当一个人试图使用一个插槽作为信号时,Qt 会给出一个错误。

于 2021-07-14T12:41:48.673 回答