• 6537阅读
  • 4回复

[提问]QTimer的SLOT函数start(int msec)和start()的问题(已解决) [复制链接]

上一主题 下一主题
离线lybi
 

只看楼主 倒序阅读 楼主  发表于: 2012-11-14
关键词: 按钮QTimerstart
程序想实现定时器1s发送数据,第一步程序运行自动发送,代码如下:
connect(&timer,SIGNAL(timeout()),this,SLOT(send()));
timer.start(1000);
程序运行没问题


第二步,想通过按钮控制开始发送,代码如下:
QPushButton *send = new QPushButton(tr("Send"));
connect(send,SIGNAL(clicked()),&timer,SLOT(start(1000)));
connect(&timer,SIGNAL(timeout()),this,SLOT(send()));
程序运行报错:Object::connect: No such slot QTimer::start(1000)


将上面代码中start(1000),改为start(),即:
connect(send,SIGNAL(clicked()),&timer,SLOT(start()));
程序就不报错了,但不能实现定时发送了,这里就不明白差别在哪里呢?


后将程序改为:
timer.setInterval(1000);
connect(send,SIGNAL(clicked()),&timer,SLOT(start()));
connect(&timer,SIGNAL(timeout()),this,SLOT(send()));
实现了我要求的定时发送数据,但不明白为什么要这样??求各位指教




离线realfan

只看该作者 1楼 发表于: 2012-11-14
connect(send,SIGNAL(clicked()),&timer,SLOT(start(1000)));

至少信号和槽参数要相同,槽的参数是通过信号的参数传的.不是直接写在这里的
离线lybi

只看该作者 2楼 发表于: 2012-11-14

哦哦 对的对的 呵呵 忽略这点了 谢谢啦
那我后面的实现方法算是正解吗?还是有些别扭的勉强实现功能?
离线roywillow

只看该作者 3楼 发表于: 2012-11-14
不要想当然地在connect中给槽函数赋予参数
只要能实现你的效果那当然就是对的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线lybi

只看该作者 4楼 发表于: 2012-11-14
受教啦   
希望自己每天都有进步!
加油!
快速回复
限100 字节
 
上一个 下一个