触发定时器的小问题,很简单

三杨 2013-02-04 09:09:03

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);

QTimer *t1 = new QTimer(this);

connect(t1, SIGNAL(timeout()), this, SLOT(TimerUpData()));

//t1->start(100); 放在这里就正常
}


void Widget::on_pushButton_clicked()
{

Widget::t1->start();//放在这里,程序可以运行,但是单击按钮会卡死退出

}


为什么? 谢谢
...全文
282 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
三杨 2013-02-04
  • 打赏
  • 举报
回复
引用 6 楼 jdwx1 的回复:
QTimer *t1应该写在头文件里,声明为类变量。 否则离开构造函数,t1就不存在了,实际上timer还在,但是t1没有意义了。

private:
    Ui::Widget *ui;
    QTimer *t1;
这样算不算?
jdwx 2013-02-04
  • 打赏
  • 举报
回复
QTimer *t1应该写在头文件里,声明为类变量。 否则离开构造函数,t1就不存在了,实际上timer还在,但是t1没有意义了。
三杨 2013-02-04
  • 打赏
  • 举报
回复
引用 1 楼 jdwx1 的回复:
Widget::t1->start(); 应改为 t1->start(); 或 this->t1->start();
我是这样写的,编译不过去了。 错误如上。
三杨 2013-02-04
  • 打赏
  • 举报
回复
引用 3 楼 soenkiyou 的回复:
引用 2 楼 soenkiyou 的回复:QTimer *t1;写到header里 ui->setupUi(this); QTimer *t1 = new QTimer(this); 写错了。。。。 。。。。。 QTimer *t1;写到.h里 使用的时候 ui->setupUi(this); *t1 = new QTimer(this)……
错误:no match for 'operator=' in '*((Widget*)this)->Widget::t1 = (operator new(24u), (<statement>, ((QTimer*)<anonymous>)))'
soenkiyou 2013-02-04
  • 打赏
  • 举报
回复
引用 2 楼 soenkiyou 的回复:
QTimer *t1;写到header里 ui->setupUi(this); QTimer *t1 = new QTimer(this);
写错了。。。。 。。。。。 QTimer *t1;写到.h里 使用的时候 ui->setupUi(this); *t1 = new QTimer(this); 调用的时候 t1->start();
soenkiyou 2013-02-04
  • 打赏
  • 举报
回复
QTimer *t1;写到header里 ui->setupUi(this); QTimer *t1 = new QTimer(this);
jdwx 2013-02-04
  • 打赏
  • 举报
回复
Widget::t1->start(); 应改为 t1->start(); 或 this->t1->start();
三杨 2013-02-04
  • 打赏
  • 举报
回复
引用 8 楼 jdwx1 的回复:
引用 7 楼 yangxiaozi 的回复:引用 6 楼 jdwx1 的回复:QTimer *t1应该写在头文件里,声明为类变量。 否则离开构造函数,t1就不存在了,实际上timer还在,但是t1没有意义了。 C/C++ code?123private: Ui::Widget *ui; QTimer *t1; 这样算不算? 当然算,但是一定要把构造……
分是你的了。
jdwx 2013-02-04
  • 打赏
  • 举报
回复
引用 7 楼 yangxiaozi 的回复:
引用 6 楼 jdwx1 的回复:QTimer *t1应该写在头文件里,声明为类变量。 否则离开构造函数,t1就不存在了,实际上timer还在,但是t1没有意义了。 C/C++ code?123private: Ui::Widget *ui; QTimer *t1; 这样算不算?
当然算,但是一定要把构造函数里的QTimer *t1 = new...改为 t1 = new...

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧