在QT中以不同的时间间隔更新GUI

时间:2016-05-05 14:18:59

标签: python c++ multithreading qt pyqt

我想知道如何在QT中以不同的时间间隔更新GUI,最好的是我可以控制时间间隔。我知道QTimer可以在相同的时间间隔更新GUI,但我需要控制时间间隔并将它们设置为不同的值。

我是否需要使用多线程?

我尝试了pyqt但失败了,请参阅“ui_mainwindow' object has no attribute 'connect'

1 个答案:

答案 0 :(得分:0)

以下是我将如何实现它,在MainWindow的类中,定义一个将QLabel设置为下一个图像的插槽:

void MainWindow::NextImage(){
    switch(currentImageNo){
    case 0:
        //set 1st image
        break;
    case 1:
        //set 2nd image
        break;
    case 2:
        //set 3rd image
        break;
    ...
    }
    timer.setInterval( /*your desired new interval based on currentImageNo*/  );
    currentImageNo++;
    //in order to loop back to the first image after the last image is shown
    currentImageNo= currentImageNo % numberOfImages; 
}

MainWindow的构造函数中,使用所需的时间间隔创建QTimer并将其timeout()信号连接到上面定义的NextImage广告位

MainWindow::MainWindow(){
    ...
    timer= new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(NextImage()));
    timer.setSingleShot(false);
    timer.setInterval(5000); //5 secs for first image
    timer.start();
    NextImage(); //to load the first image initially
}

请记得将currentImageNonumberOfImagestimer声明并初始化为MainWindow班级的成员。