找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3331|回复: 0
打印 上一主题 下一主题
收起左侧

Qt之QTimer

[复制链接]
跳转到指定楼层
楼主
ID:3721 发表于 2015-1-5 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  在Qt开发界面的时候,非常多的时候都得使用定时器,定时器具体可以干什么呢?比如:QTimer控制时钟、QTimer定时改变样式、QTimer改变进度等。。。说到这里,经常使用QQ,而不同的时段都会显示不同的背景,我认为如果用Qt实现的话,就得使用QTimer定时的获取时间,判断当前时间为morning、noon、afternoon、night来改变当前的背景。。。    虽然QTimer简单易用,但是比较耗内存,所以在不必要的时候就必须终止它。。。

QTimer构造:
  QTimer timer = new QTimer();

QTimer设置超时并启动:
  timer->setInterval(1000);
  timer->start();
或:timer->start(1000);

QTimer改变定时间隔为msec毫秒
  timer->changeInterval(msec);
如果这个定时器信号是运行的,它将会被停止并且重新开始,否则它将会被开始。

QTimer是否则正在运行
  timer->isActive()
如果定时器正在运行,返回真,否则返回假。

QTimer停止
  timer->stop();

当达到超时时间,则发射信号,执行指定的槽函数
  connect(timer, SIGNAL(timeout()), this, SLOT(myTimeout()));

    以下是利用QTimer来控制一个进度条,超时时间为1000毫秒(1秒),当达到超时时间时,进度条增加1%,当进度条为100%时,停止Qtimer。

MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
  this->setFixedSize(400, 300);
  progress_value = 0;
  timer = new QTimer();
  timer->setInterval(1000);
  timer->start();
  progress_bar = new QProgressBar(this);
  progress_bar->setGeometry(50, 50, 150, 20);
  progress_bar->setValue(0);
  connect(timer, SIGNAL(timeout()), this, SLOT(changeValue()));
}
void MyWidget::changeValue()
{
  progress_value++;
  if(progress_value > 100)
  {
    timer->stop();
  }
  progress_bar->setValue(progress_value);
}

效果图:

注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表