解决方法:
void BaseWindow::showEvent(QShowEvent *event)
{
#if QT_VERSION >= 0x050000
this->setAttribute(Qt::WA_Mapped);
#endif
QWidget::showEvent(event);
}
软件主窗口重新实现函数changeEvent,解决最小化之后界面不刷新问题:
void VRS::changeEvent(QEvent * event)
{
//最小化之后再恢复到之前状态,界面会出现不update的问题,下面这段代码解决此问题
if( event->type() == QEvent::WindowStateChange)
{
this->setAttribute(Qt::WA_Mapped);
}
}
播放软件实现了多窗口同时播放多路视频。在切换不同的视频窗口时出现背景图片刷新闪屏。
播放视频的widget类派生自QWidget,重新实现paintEvent函数,绘制背景图片。
void CSSAWidget::paintEvent(QPaintEvent *)
{
由于继承了QWidget,必须重载paintevent才能绘制背景
QStyleOption opt;
opt.initFrom(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
p.drawPixmap(0, 0, width(), height(), m_pixMapBG);//绘制背景
}
句柄直接传递给VC库,往往达不到效果,要使用下面的转换:
HWND temp = static_cast<HWND>((void*)playWidget->winId());
版权声明:本文为u014746838原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。