下の背景が透けて見えるように、QListView の背景を削除したいと考えています。どうやってやるの?
試しsetAttribute(Qt::WA_NoSystemBackground)
てみsetAttribute(Qt::WA_NoBackground)
ましたが、何も変わりませんでした。またpaintEvent()
、それ以外の場合はアイテムを描画しません。
何か案が?
下の背景が透けて見えるように、QListView の背景を削除したいと考えています。どうやってやるの?
試しsetAttribute(Qt::WA_NoSystemBackground)
てみsetAttribute(Qt::WA_NoBackground)
ましたが、何も変わりませんでした。またpaintEvent()
、それ以外の場合はアイテムを描画しません。
何か案が?
答えは、あなたQListView
がトップレベルのウィジェットかどうかによって異なります。透明度に関するQWidget ドキュメントで詳細に説明されています。トップレベルのウィジェットの場合、次のように単純です。
view->setWindowOpacity(50);
トップ レベルではないウィジェットの場合、背景をアルファ チャネルのあるものに設定します。
QPalette palette = view->palette();
palette.setColor(QPalette::Background, Qt::transparent);
view->setPalette(palette);
スタイル シートでも同じことができるはずです。
view->setStyleSheet("background-color: transparent;");
ウィジェットが背景を自動的に塗りつぶさないように、 autoFillBackgroundを falseに設定する必要がある場合があります。