Я хочу настроить QTabWidget, чтобы каждая вкладка имела свой цвет фона. Я знаю, что это невозможно сделать с помощью таблиц стилей, поэтому я создал подкласс QTabBar и изменил его paintEvent. Затем я заменил QTabBar по умолчанию для QTabWidget своей собственной реализацией. Однако цвет фона вкладок не меняется. Кто-нибудь знает, что мне не хватает?
Вот небольшое демонстрационное приложение, иллюстрирующее мою проблему:
from PyQt4 import QtGui
import sys
class coloredTabBar(QtGui.QTabBar):
def __init__(self, parent = None):
QtGui.QTabBar.__init__(self, parent)
def paintEvent(self, event):
p = QtGui.QStylePainter(self)
painter = QtGui.QPainter(self)
for index in range(self.count()): #for all tabs
tab = QtGui.QStyleOptionTabV3() #create styled tab
self.initStyleOption(tab, index) #initialize with default values
#change background color to red
tab.palette.setColor(QtGui.QPalette.Base, QtGui.QColor(255, 0, 0))
p.drawControl(QtGui.QStyle.CE_TabBarTab, tab) #draw tab
class coloredTabWidget(QtGui.QTabWidget):
def __init__(self, parent = None):
QtGui.QTabWidget.__init__(self, parent)
coloredTabs = coloredTabBar()
self.setTabBar(coloredTabs) #replace default tabBar with my own implementation
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
tabWidget = coloredTabWidget()
tabWidget.addTab(QtGui.QWidget(), "Hello")
tabWidget.addTab(QtGui.QWidget(), "World")
tabWidget.show()
sys.exit(app.exec_())
С уважением
Бернхард