QT页面打开阻塞窗口移动花屏现象解决方法

2019-07-13 08:20发布

最近遇到一个问题,就是当一个Qt的主窗口,打开另一个阻塞的窗口时,拖动上层窗口,会造成原来的主页花屏,直到关闭上层阻塞页面,原主页面窗口才能显示正常。解决方法很简单: this->setAttribute(Qt::WA_TranslucentBackground); 使用上面的函数实际上是设置了窗口透明,也就解决了拖动阻塞窗口,主窗口无法刷新造成的花屏了,但是会发现,如果原主窗口没有设置背景的话,窗口背景会显示成纯黑 {MOD},所以,一般重写QWidget的 paintEvent 函数设置好主窗口的背景颜 {MOD},如: void SkinMainWindow::paintEvent( QPaintEvent * ) { QPainter painter( this ); painter.setBrush( QBrush(QColor(qRgba(48,52,68,0.4)) ) ); painter.setPen( QPen( Qt::transparent ) ); //防止出现黑 {MOD}边框 painter.drawRect( 0, 0, this->weight(), this->height() ); }