Я пытаюсь отобразить последовательность изображений через Qlabel, используя setPixmap. У меня есть QStringList, содержащий имена файлов изображений, и цикл for, который перебирает изображения с 5-секундным ожиданием после каждого изображения. Однако всегда отображается только последний файл изображения. В настоящее время экран остается пустым во время ожидания первых итераций, пока, наконец, не будет показано последнее изображение. Я читал, что использование цикла for не сработает и вместо этого я должен использовать сигналы и слоты. Однако я новичок в этой концепции, и я был бы очень признателен за пример, который укажет мне правильное направление.
Вот мой текущий код:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow){
ui->setupUi(this);
QStringList images;
QString imageName;
images << "redScreen.png" << "blueScreen.png" << "greenScreen.png";
for(int x=0; x < images.size(); x++){
imageName = images.at(x);
this->displayScreen(imageName, 5);
}
}
void MainWindow::displayScreen(QString imageName, int wait){
QTimer t;
QEventLoop loop;
QPixmap myImage;
myImage.load(":/images/" + imageName);
ui->imageLabel->setPixmap(myImage);
ui->imageLabel->repaint();
// 5 second wait between next iteration
t.start(wait*1000);
connect(&t, SIGNAL(timeout()), &loop, SLOT(quit()));
loop.exec();
}