我想知道如何在QT中以不同的时间间隔更新GUI,最好的是我可以控制时间间隔。我知道QTimer可以在相同的时间间隔更新GUI,但我需要控制时间间隔并将它们设置为不同的值。
我是否需要使用多线程?
我尝试了pyqt但失败了,请参阅“ui_mainwindow' object has no attribute 'connect'”
答案 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
}
请记得将currentImageNo
,numberOfImages
和timer
声明并初始化为MainWindow
班级的成员。