java 信号 槽,qt5:使用static_cast连接过载信号和插槽功能

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

我知道qt5和qt4中函数connect的语法不同,查找Document以了解如何在qt5中使用connect()来处理重载信号/槽函数 .

我建议,但它仍然无法正常工作 .

newspaper.h

signals:

// overload function

void newPaper(const QString &name) const;

void newPaper(const QString &name, const QDate &date) const;

reader.h

//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(&Newspaper::newPaper),

&reader,

static_cast(&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(&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(&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

我已经搜索了对我没用的其他问题 . 怎么解决?您的建议将不胜感激 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值