• 8573阅读
  • 2回复

请问如何让进度条暂停呢? [复制链接]

上一主题 下一主题
离线goonman
 

只看楼主 正序阅读 楼主  发表于: 2009-10-16
       我用QProgressBar写了一个进度条,然后定义了两个按钮,点击Start按钮时进度条开始滚动,现在我需要在进度条滚动过程中,点击Pause按钮时进度条能够暂停下来,不知道这个的槽函数应该怎么写,希望大家帮帮忙。下面是Start的相关代码:
//定义按钮:
progressBar = new QProgressBar;
progressBar->setRange(0, 20);
progressBar->setFormat("%v");
progressBar->setValue(0);
//点击Start按钮后的槽函数
startslot()
{
for(int i=0;i<21;i++)
      {
                  progressBar->setValue(i);
                 sleep(1);
                 qApp->processEvents();
        }
}
离线goonman

只看该作者 2楼 发表于: 2009-10-16
恩,多谢楼上的指点,我想你的思路是一种办法,我用了另一种办法去做的,定义了一个bool型变量:
//*.h文件
bool isStop;
//类中
...
isStop = false;
...
//点击Start按钮后的槽函数
startslot()
{
     for(bar=0;bar<21;bar++)
     {
          if(!isStop)
           {
                 progressBar->setValue(bar);
                 sleep(1);
                 qApp->processEvents();
            }
         else
         {
                   progressBar->setValue(bar);
                   qApp->processEvents();
                   isStop = false;
                   break;
            }
     }
}
//点击Pause按钮后的槽函数
pauseslot()
{
     isStop = true;
}

这样点Pause按钮时滚动条就会停下来。不过还是有一个小bug,再次点Start时,就会重新从0开始滚动,希望和有兴趣的朋友一起学习!!\(^o^)/~
离线dbzhang800

只看该作者 1楼 发表于: 2009-10-16
感觉上,你应该考虑 点 Start 按钮后启动一个 QTimer 在 QTimer 是槽函数中控制你的QProcessBar
暂停等都针对 QTimer 操作
快速回复
限100 字节
 
上一个 下一个