qt5:将过载信号和插槽功能与static_cast连接

杰瑞

我的环境:Qt5.5 + QtCreator3.5 + OSX10.11

我知道qt5和qt4中的connect函数的语法是不同的,并且查找文档以弄清楚如何在qt5中使用connect()处理信号/插槽函数的重载。

我按照建议进行操作,但仍然无法正常工作。

报纸

signals:
    // overload function
    void newPaper(const QString &name) const;
    void newPaper(const QString &name, const QDate &date) const;

读者

//overload function
void receiveNewspaper(const QString &name) const
{
    qDebug() << "overload(name): Receives Newspaper: " << name;
}
//overload function
void receiveNewspaper(const QString &name, const QDate &date) const
{
    qDebug() << "overload(name, date): Receives Newspaper: " << name << "\tDate:" << date;
}

main.cpp

//connect for overload signal,slot function
QObject::connect(&newspaper,
                 static_cast<void (Newspaper:: *)(const QString &)>(&Newspaper::newPaper),
                 &reader,
                 static_cast<void (Reader:: *)(const QString &)>(&Reader::receiveNewspaper) );

但是它得到如下错误

./2_16_SignalSlotDeep/main.cpp:16:22: error: address of overloaded function 'newPaper' cannot be static_cast to type 'void (Newspaper::*)(const QString &)'
                     static_cast<void (Newspaper::*)(const QString &)>(&Newspaper::newPaper),
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../2_16_SignalSlotDeep/newspaper.h:28:10: note: candidate function
    void newPaper(const QString &name) const;
         ^
../2_16_SignalSlotDeep/newspaper.h:29:10: note: candidate function
    void newPaper(const QString &name, const QDate &date) const;
         ^
../2_16_SignalSlotDeep/main.cpp:18:22: error: address of overloaded function 'receiveNewspaper' cannot be static_cast to type 'void (Reader::*)(const QString &)'
                     static_cast<void (Reader::*)(const QString &)>(&Reader::receiveNewspaper) );
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../2_16_SignalSlotDeep/reader.h:16:10: note: candidate function
    void receiveNewspaper(const QString &name) const
         ^
../2_16_SignalSlotDeep/reader.h:21:10: note: candidate function
    void receiveNewspaper(const QString &name, const QDate &date) const

我已经搜索了其他对我没有帮助的问题。如何解决?您的建议将不胜感激。

其他问题链接1

其他问题link2

硅法师

您不能使用static_cast丢弃信号的“常量”。尝试删除信号背后的“常量”。

通常,信号不需要是常量,因为它们通常以非常量方法发出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QT5中的信号和插槽

来自分类Dev

Qt5:无法将信号连接到插槽

来自分类Dev

Qt5:虽然已连接,但发出信号但未调用插槽

来自分类Dev

Qt:连接文本中的信号和插槽

来自分类Dev

继承的对象[Qt5]中出现信号和插槽问题

来自分类Dev

继承的对象[Qt5]中出现信号和插槽问题

来自分类Dev

Qt插槽和信号未连接:无此信号

来自分类Dev

Qt5 | 带插槽的功能不起作用

来自分类Dev

Qt信号和插槽-没有匹配的通话功能

来自分类Dev

连接信号和插槽不起作用 Qt

来自分类Dev

信号和插槽 qt 关闭插槽

来自分类Dev

Qt信号和插槽:权限

来自分类Dev

Qt插槽和信号语法

来自分类Dev

Qt信号和插槽故障

来自分类Dev

PyQt5线程,信号和插槽。连接错误

来自分类Dev

是否可以从Qt5 QML中的信号断开所有插槽?

来自分类Dev

QT5 C++ 信号到 QML 插槽不起作用

来自分类Dev

Qt5 跨线程信号和槽

来自分类Dev

Qt5信号捕获到插槽会生成运行时错误“信号不存在”

来自分类Dev

如何使用QT Designer和Visual Studio连接Qt信号和插槽

来自分类Dev

Qt转发信号/插槽连接

来自分类Dev

Qt将信号连接到插槽

来自分类Dev

Qt QLed信号插槽如何连接?

来自分类Dev

Qt信号和插槽传递数据

来自分类Dev

在QT中清除信号和插槽的命名

来自分类Dev

Qt-2类信号和插槽

来自分类Dev

使用插槽和信号连接Qt中的两种形式

来自分类Dev

在代码中的哪个位置连接Qt信号和插槽以获得最佳代码可读性?

来自分类Dev

Qt插槽和信号。获取插槽接收器对象