显示连续的QImages流

时间:2016-03-21 10:25:38

标签: qt qimage

我有一组QImages进入一个功能(固定间隔4秒后),该功能的工作是更新QLabel以显示新图像。

在执行此操作时,我可以看到图像渲染中存在非常明显的延迟。

我也遵循了链接上的建议:

Efficient way of displaying a continuous stream of QImages

但是,即使在上面的链接中使用ImageDisplay,我也可以看到图像渲染的延迟。

有人可以建议最好的方法吗?

以下是代码..代码运行所需的图像位于:

https://www.dropbox.com/sh/jiqdfqoiimjs7ei/AAAXezUeeCFyZXjNNOTmWZVga?dl=0

#include <QDialog>
#include <QtGui>
#include <QtCore>
#include <QApplication>
#include <QWidget>
#include <QImage>

class imageDisplay : public QWidget
{
    public:
        imageDisplay(QWidget*);
        ~imageDisplay();
        void setImage(QImage* img);

    private:
        QImage* m_image;

protected:
        void paintEvent(QPaintEvent* evt);
};

imageDisplay::imageDisplay(QWidget* parent) : QWidget(parent)
{
    m_image = 0;
    setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
}

imageDisplay::~imageDisplay()
{
}

void imageDisplay::setImage(QImage* img)
{
    m_image = img;
    repaint();
}

void imageDisplay::paintEvent(QPaintEvent*)
{
    if(!m_image) return;
    QPainter painter(this);
    painter.drawImage(rect(), *m_image, m_image->rect());
}

////////////////////////////////////
//
int main(int arc, char ** argv)
{
    QApplication theApp(arc, argv, true);

    QDialog* dlg = new QDialog();

    imageDisplay* wgt = new imageDisplay(dlg);
    wgt->resize(600,400);
    dlg->show();

    for(int i = 0 ; i <= 19; ++i)
    {
        sleep(1);
        QString fileName = "aaa" + QString::number(i) + ".png";
        QImage* img = new QImage(fileName);
        wgt->setImage(img);
    }

    return theApp.exec();
}

0 个答案:

没有答案