カスタム スタイルの QMessageBox に取り組んでいます。メソッド Polish() のカスタム QStyle クラスで、次のように呼び出します。
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 ペインティング キャッシュをフラッシュしたい - このようなものが存在する場合 (バッキング ストア??)。