目的
这篇博客主要目的是说明Qt窗口最小化还原窗口不刷新或者是白色或者是透明。但是我在某个项目中出现有类似于这样现象
但不完全是这样触发条件,因此在这里写篇博客整理此类型问题而已。
说明
我那程序是拉四路流同时, 又有测试投屏功能, 同时又开启录制功能, 程序跑着跑着就突然预览流卡死,然后整个ui出现假死现象(ui不刷新, 但是主线程能够处理对应事件)。
起初我还以为是主线程阻塞了, 首先想到的是死锁, 结果通过vs堆栈以及线程使用情况, 没发现任何异常情况。搜了一些, 总感觉奇奇怪怪, 但又不是这个问题。
网上搜了下 参考几篇博客
一:
最小化窗口后无法还原, 背景透明与无窗口提示设置导致, 还说是qt 5.2之后解决。但问题是我的使用版本5.15.2.
Widget with Qt::FramelessWindowHint and Qt::WA_TranslucentBackground stops painting after minimize/restore
https://bugreports.qt.io/browse/QTBUG-34147
void TestDlg::changeEvent( QEvent* e )
{
if( e->type() == QEvent::WindowStateChange)
{
if(this->windowState() & Qt::WindowMinimized )
{
//do something after minimize
}
else
{
setWindowFlags(Qt::Window);//set normal window flag
setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);//and return to your old flags
this->showNormal();
}
}
}
二:
假死没刷新, 设置Qt::WA_Mapped
void MainWindow::showEvent(QShowEvent *event)
{
setAttribute(Qt::WA_Mapped);
QMainWindow::showEvent(event);
}
经过实验分析:nuc性能比较差, 当前全部跑起来, 再加上腾讯会议, 几乎吃掉了cpu100%性能。
初步分析nuc hdmi 驱动需要优化, 目前采用的2k 60优化后的驱动, 整个跑起来只占有50%性能。ui假死问题 似乎也没怎么出现。
此上述搜到的, 只是作为参考而整理, 目前遇见的并不是此类问题。所以方案是否可行, 请读者因自身实际情况酌情分析,