2

QTabWidget を含む PyQt メイン ウィンドウがあります。タブ ウィジェットには、いくつかのボタンとテキスト ボックスが含まれています。

タブバー領域に突き出ているタブだけでなく、タブの背景全体に色を付けたいと思います。

私はスタイル シートを使用しておらず、既にパレットを使用しているため、パレットを使用することを好みますが、スタイル シートが唯一のオプションである場合は、それで問題ありません。

私はもう試した:

p = self.tabWidget.palette()
p.setColor(self.tabWidget.backgroundRole(), Qt.red)
self.tabWidget.setPalette(p)

これにより、赤いタブ バー領域が生成されますが、メインの背景はまだ白です。

self.tabWidget.setAutoFillBackground(False) を使用してオートフィルをオフにすると、わずかな違いが生じます。個々のタブはきれいに色付けされていますが、本体はまだ白です。

少しスタイルシートを試す:

self.tabWidget.setStyleSheet("QWidget {background-color: yellow }")

これにより、タブの本体が色付けされますが、ボタンやテキスト ボックスを含む他のすべての色も黄色になります。また、突き出ている小さなタブはすべて黄色です。自動入力には何の影響もありませんでした。

タブの本体に色を付けるが、他のウィジェットを消去しない方法についてのアイデアはありますか?

私は PyQt バージョン 4.10 と Python 2.7 を使用しています。

4

2 に答える 2

0

タブ本体の背景に色を付けたいだけの場合は、トップレベルのコンテンツ ウィジェットの背景の役割を設定します。

    widget = QtGui.QWidget(tabwidget)
    widget.setAutoFillBackground(True)
    palette = widget.palette()
    palette.setColor(widget.backgroundRole(), QtCore.Qt.red)
    widget.setPalette(palette)
    # add layout and child widgets
    ...
    self.addTab(widget, label)

これと似たような質問が以前にもありましたが、タブの色付けに関しては、すべてのプラットフォームで機能する唯一のソリューションはスタイルシートかもしれません。ただし、それは正確に何を達成しようとしているかによって異なります。

その質問に対する私の答えは、タブバーの描画イベントを再実装し、かなりうまく機能しますが、Linux でのみです。

于 2013-11-06T18:32:43.493 に答える