2 (左側) に設定して、QTabWidget
テキストを水平に表示しようとしていました。周りを検索した後、このリンクTabposition
から次のコードを見つけました。
class FingerTabWidget(QtGui.QTabBar):
def __init__(self, *args, **kwargs):
self.tabSize = QtCore.QSize(kwargs.pop('width'), kwargs.pop('height'))
super(FingerTabWidget, self).__init__(*args, **kwargs)
def paintEvent(self, event):
painter = QtGui.QStylePainter(self)
option = QtGui.QStyleOptionTab()
painter.begin(self)
for index in range(self.count()):
self.initStyleOption(option, index)
tabRect = self.tabRect(index)
tabRect.moveLeft(10)
painter.drawControl(QtGui.QStyle.CE_TabBarTabShape, option)
painter.drawText(tabRect, QtCore.Qt.AlignVCenter | QtCore.Qt.TextDontClip, self.tabText(index));
painter.end()
def tabSizeHint(self,index):
return self.tabSize
これを使用するだけで、このコードを適用できました
Tab = QtGui.QTabWidget()
Tab.setTabBar(FingerTabWidget(width=260,height=28))
すべてが期待どおりで、正常に動作しているように見えますが、タブの 1 つにマウスを合わせるたびに、このエラー メッセージが表示され続けます。
QPainter::begin: Painter already active
プログラムの機能には影響しませんが、このエラー メッセージの原因を知りたいです。簡単な説明で済みます。