这是一个创建于 2356 天前的主题,其中的信息可能已经有所发展或是发生改变。
板子不支持 opengles,所以就用 label 去贴了,代码如下
··· c++
void QVideoView::PaintOneFrame(QImage imge)
{
m_mutex.lock();
wb_Image = imge.copy();
m_mutex.unlock();
update(); //调用 update 将执行 paintEvent 函数
}
···
//重写 paintEvent 事件
void QVideoView::paintEvent(QPaintEvent *)
{
QTime time;
time.start(); //开始计时,以 ms 为单位
QPainter painter;
painter.begin(this);
m_mutex.lock();
if (wb_Image.size().width() <= 0)
{
m_mutex.unlock();
return;
}
///将图像按比例缩放成和窗口一样大小
QImage img = wb_Image.scaled(this->size(),Qt::IgnoreAspectRatio);
m_mutex.unlock();
int x = this->width() - img.width();
int y = this->height() - img.height();
painter.drawImage(QPoint(x,y),img); //画出图像
painter.end();
}
连续跑个五六个小时就会出现了,尝试过用 QTimer 去定时调用 update(),但也是一样的情况,有没人能解答下的?
3 条回复 • 2018-06-13 18:05:31 +08:00
|
|
1
nybux 2018-06-13 16:52:08 +08:00
你换 repaint 试试
|
|
|
2
wbing 2018-06-13 17:34:53 +08:00
@ nybux 试过了,repaint 会把父窗口也刷白了
|
|
|
3
nybux 2018-06-13 18:05:31 +08:00
那设置个无效区域呢?
|