微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

statusbar->messageChanged() QT 的插槽

如何解决statusbar->messageChanged() QT 的插槽

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)

解决方法

如果您使用的是 Qt5,则连接中不需要 SIGNALSLOT 宏。

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

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

编辑: 作为@G.M.在评论中说明 QMetaObject::connectSlotsByName: No matching signal for func1(QString) 是 Qt 在尝试使用插槽作为信号时给出的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。