7

QMdiSubWindow のタイトルバーをカスタマイズしたいと思います。そのために、qss を使用します。

QMdiSubWindow { border: 1px solid #000000; background: #000000 }
QMdiSubWindow:title { background: #000000 }

問題は、この qss を適用すると、ウィンドウのアイコンが消えることです。QDockWidget の qss でこれらのアイコンを定義できることはわかっています。

QDockWidget { ... titlebar-close-icon: url(myCloseIcon.png); ... }

ただし、QMdiSubWindow に対して定義する方法が見つかりません。たぶん、この方法は存在しません。それが可能かどうか知っていますか?

4

1 に答える 1

2

あなたのようにQt 5.2できません。チェックしていませんが、知る限り、リリース5.3では何も変更されていません。QMdiArea/QMdiSubWindow5.3

最も簡単な解決策は、 を使用QCommonStyleしてタイトル バーを使用およびペイントすることQPainterです。詳細については、QCommonStyleおよびQStyleのドキュメントを参照してください。スタイルクラスQCommonStyleではなく、派生することをお勧めします。継承するので、何も失うことはありません。QStyleQCommonStyleQStyle

また、サブ ウィンドウでドロップ シャドウなどのより複雑な効果を実現したい場合、ここで残した唯一のオプションは、派生QMdiSubWindowして、派生クラスをQMdiArea呼び出し、独自のタイトル バーを持つ独自のサブウィンドウを最初から実装することです。次に、独自のタイプの を定義し、ここで公開されているようなものにアクセスして、 からタイトルバーの色をカスタマイズできます。QWidget::setWindowFlags(Qt::FramelessWindowHintflag)QMdiSubWindowQ_PROPERTYQColorQSSQSS

別のオプションは、新しい MDI エリア ウィジェットを最初から作成することですが、これはあなたの場合には当てはまらないと思います。カスタム スタイルを使用してタイトル バーをカスタマイズする必要がある場合は、取り組むことができる最善の方法です。問題が発生した場合は、この投稿の編集として例を提供できます。

QMdiSubWindowただし、のみを使用して標準をカスタマイズしたい場合QSSは、残念ながら現時点ではできません。

于 2014-12-30T23:46:39.693 に答える