最近遇到一个问题,就是当一个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() );
}