找回密码
 立即注册
收起左侧

QTimer信号槽新旧写法问题

2
回复
5508
查看
[复制链接]
累计签到:10 天
连续签到:1 天
来源: 2020-2-19 19:57:14 显示全部楼层 |阅读模式
1Qter豆
在QT5中,将connect(timer, SIGNAL(timeout()), this, SLOT(update())); 改成 connect(timer, &QTimer::timeout, this, &QWidget::update);之后为什么会出错呢?

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:161 天
连续签到:1 天
2020-2-20 08:32:16 显示全部楼层
查下文档可知,update()是重载函数。需要指明具体调用的哪个,void (Widget::*updatePointer)() = Widget::update;     connect(timer,&QTimer::timeout,this,updatePointer);
回复

使用道具 举报

累计签到:10 天
连续签到:1 天
2020-2-20 09:58:34 显示全部楼层
谢谢,改成如下如下两种方式都可以了:
1. void (QWidget::* updatePointer)() = &QWidget::update;
    connect(timer, &QTimer::timeout, this, updatePointer);
2. connect(timer, &QTimer::timeout, this, static_cast<void (QWidget::*)()>(&QWidget::update));
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了