我正在开发一个自定义样式的 QMessageBox。在我的自定义 QStyle 类中的方法 Polish() 中,我调用:
if( (pDialog = qobject_cast<QDialog*>( pWidget )) != NULL )
{
pDialog->setWindowFlags( pDialog->windowFlags() | Qt::FramelessWindowHint );
// Allow QStyle draw widget background
pDialog->setAttribute( Qt::WA_StyledBackground, true );
// Set window background transparent
QPalette oPalette = pDialog->palette();
oPalette.setBrush( QPalette::Window, QBrush(Qt::transparent) );
pDialog->setPalette( oPalette );
}
这很好用,除非我们使用半透明边框:半透明部分在每次重绘时变得越来越暗(例如,当多次按下“显示详细信息”/“隐藏详细信息”时)。
更新:我刚刚意识到,当移动消息框时,“太暗的半透明内容”也会被移动。因此,我想刷新 QWidget 绘画缓存 - 如果存在这样的东西(后备存储??)。