我尝试在QT Creator中制作GUI应用程序。我想显示所选目录中的所有图像(一种幻灯片放映),我阅读QDir,QStringlist,QFileDialog类引用但它不起作用。它只显示最后一张图像在文件夹中。
for(int i=0;i<10;i++)
{
QImage image2(directory+"/"+fileList[i]);
ui->label_pic2->setPixmap(QPixmap::fromImage(image2));
//Sleep(550);
}
睡眠功能仅允许缓慢加载而不是逐个显示。
答案 0 :(得分:2)
首先,您需要确保只在未执行代码且应用程序可以处理传入的events时更新GUI。如果您创建一个无限循环,您的GUI将被更新。这就是为什么你只能看到最后一张图片 - 因为你不让GUI更新。
您可以强制应用程序按QCoreApplication::processEvents()
处理传入的事件。在这种情况下,您可能会看到快速闪烁的图像。但是在显示每张图像后你肯定需要暂停一下。而Sleep
可能会在那里工作,但在暂停期间,您的应用程序将被冻结而无法处理事件。
这就是为什么建议您使用QTimer
。它在一定时间内调用一个插槽。所有其他时间应用程序正在处理消息和更新GUI等。调用插槽后,您可以切换label
以显示下一张图像。这正是你所需要的。
要点:
1.创建QTimer
,设置间隔并将其连接到插槽,启动计时器
2.在插槽实现中,读取列表中的下一个图像并将其分配给label
。
提示:要跟踪显示的图像,请创建一个整数成员变量。在开始动画时将其设置为0,在插槽中增加它。