QTabWidget でテキストの配置を設定する方法が見つかりません。
このウィジェットのインスタンスを作成した後、そのtabPositionプロパティを West に設定しましたが、テキスト/ラベルを水平に表示したいと思います。Qt のstylesheetsを確認しましたが、ご覧のとおり、text-alignプロパティは QPushButton と QProgressBar でのみ設定できます。
私はすでに Web で検索しましたが、バグレポート、未回答の質問、そして最後に paint() メソッドの再実装を提案するユーザーを見つけました。解決するかもしれませんが、Python (PyQt または PySide) を使用していて、その方法がわかりません。
手伝って頂けますか?
編集: Teukamm のおかげで、私は少しのコードを書きました:
from PyQt4 import QtGui, QtCore
class HorizontalTabWidget(QtGui.QTabBar):
def paintEvent(self, event):
for index in range(self.count()):
painter = QtGui.QPainter()
painter.begin(self)
painter.setPen(QtCore.Qt.blue);
painter.setFont(QtGui.QFont("Arial", 10));
tabRect = self.tabRect(index)
painter.drawText(tabRect, QtCore.Qt.AlignVCenter | QtCore.Qt.TextDontClip, self.tabText(index));
painter.end()
def sizeHint(self):
return QtCore.QSize(60, 130)
import sys
app = QtGui.QApplication(sys.argv)
tabs = QtGui.QTabWidget()
tabs.setTabBar(HorizontalTabWidget())
widget1 = QtGui.QWidget()
widget2 = QtGui.QWidget()
tabs.addTab(widget1, "Widget1")
tabs.addTab(widget2, "Widget2")
tabs.setTabPosition(2)
tabs.show()
sys.exit(app.exec_())
最後に、期待どおりにテキストを配置しましたが、少し (大きな?) 問題があります。すべてのタブ ボタンの右側をクリックすると、currentChanged SIGNALが送信されません。また、paintEvent ですべての tabRect の幅を拡張しようとしましたが、うまくいきません。何を変更すればよいですか?
ありがとうございました :)
ところで:QTabWidgetから継承することはできませんでしたが、QTabBarから継承できませんでした;)
編集:
解決しました!tabSizeHintのメソッドsizeHintを変更しただけで、うまく機能します:)