Qt:在主线程中强制UI更新

时间:2017-03-31 10:29:46

标签: qt user-interface updates

我正在编写一个图像查看器,我希望在显示当前图像后预加载下一个图像。

现在的问题是:当我显示图像时(例如,通过将QPixmap应用于QLabel)并在同一个Qt方法调用中加载下一个图像(例如,在同一个函数中) )预加载后将显示图像。所以我还有时间差距..

我可以切换到线程解决方案,但这会引入更多问题。

所以我现在的问题是:我可以强制Qt到update() / redraw()当前调用堆栈中的UI,还是我必须找到另一种方法来预加载#34; metacall"

1 个答案:

答案 0 :(得分:1)

我会尝试以下列方式解决问题(不处理线程):

void setCurrentImage()
{
    [..]
    label->setPixmap(pixmap);
    QTimer::singleShot(0, this, SLOT(preloadNextImage()));
    [..]
}

// A slot.
void preloadNextImage()
{
    // Do preload.
}