关键的控件就是一个按键,一个Qspinbox和一个进度条。点击按键的时候获取QSpinix里面的值,用它给进度条设置最大范围,让后定时器开始工作,让进度条从0开始每秒增加一次一直到最大值。按键有两个text。一个开始,一个结束。当进度条到最大值得时候按键的text会显示为开始状态。
现在的问题是:当我每次让进度条自己增加到最大值以后在开始下一次点击的话是对的。但是,如果我在进度条没到达最大值的时候点击一次按键。(这个时候我将进度条值设置为最大,定时器也停止,按键显示开始)。当我再次点击按键让进度条开始的时候,进度条的增加速度会比正常的快一倍,当我再中途点击按键再重新开始的时候会再快一倍!!!求原因,就给力啊!!!代码如下:
int i= 0;
int xx=0;
void MainWindow::Start_Scan()
{
    Time = new QTimer;
    spinBox->setRange(10,2000);
    temp = spinBox->value();
    spinBox->setEnabled(true);
    plan->setRange(0,temp-1);
    if(xx%2 <= 0)
    {
        Time->start(1000);
        connect(Time, SIGNAL(timeout()), this, SLOT(plan_show()));
        Start->setText("Stop Scan");
        plan->setValue(0);
        T->setText("0");
        i=0;
        xx++;
     }
     else
     {
         Start->setText("Start Scan");
         Time->stop();
         plan->setValue(temp-1);
         T->setText(QString::number(temp));
         xx++;
         i = temp;
     }
}
void MainWindow::plan_show()
{
    //qDebug() << i << 1;
    if(i<temp)
    {
        plan->setValue(++i);
        T->setText(QString::number(i));
        //qDebug() << i << 2;
    }
    else
    {
        Time->stop();
        //delete Time;
        Start->setText("Start Scan");
        xx++;
    }
}