Ab Qt 5.2
können Sie nicht; habe nicht 5.3
überprüft aber AFAIK haben sie nichts in der QMdiArea/QMdiSubWindow
in der 5.3
Freigabe geändert.
Die einfachste Lösung, die Sie haben, ist QCommonStyle
und malen Sie die Titelleiste mit QPainter
. Weitere Informationen hierzu finden Sie in den Dokumentationen QCommonStyle und QStyle. Bitte beachten Sie, dass es empfohlen wird, QCommonStyle
und nicht QStyle
für Ihre Stilklasse abzuleiten. QCommonStyle
erbt QStyle
, damit Sie nichts verlieren.
Und wenn Sie komplexere Effekte wie Schlagschatten auf dem Unterfenster dann der einzige Option, die Sie verlassen haben, hier zu erreichen, sind QMdiSubWindow
und QMdiArea
abzuleiten, rufen QWidget::setWindowFlags(Qt::FramelessWindowHintflag)
auf die QMdiSubWindow
abgeleiteten Klasse und implementieren von Grunde auf Ihre eigene Subwindow mit Ihrer eigenen Titelleiste. Sie können dann Ihre eigenen Q_PROPERTY
s des Typs QColor
definieren und auf diese von QSS
wie ausgesetzt here zugreifen, um Titelleistenfarben von QSS
anzupassen.
Eine andere Option wäre, ein neues MDI-Bereichs-Widget von Grund auf neu zu erstellen, aber ich denke nicht, dass dies in Ihrem Fall anwendbar wäre. Wenn Sie nur die Titelleiste mit einem benutzerdefinierten Stil anpassen möchten, ist der beste Ansatz, den Sie angehen können. Wenn in Schwierigkeiten, könnte Beispiele als Bearbeitung für diesen Beitrag zur Verfügung gestellt werden.
Aber wenn Sie den Standard QMdiSubWindow
mit nur QSS
anpassen möchten, ist es leider im Moment nicht möglich.
Dies ist ein Problem seit vielen Jahren. Gibt es Workarounds, um MDI-Childs zu formatieren? – cytrinox