Как изменить выравнивание текста в QTabWidget?
Я не могу найти способ установить выравнивание текста в QTabWidget.
После того, как я создал экземпляр этого виджета, я установил егоTabPosition свойство на запад, но я бы хотел, чтобы текст / метка показывались горизонтально. Я посмотрел на Qt'sтаблицы стилей, но, как вы можете видеть,выравнивания текста свойство может быть установлено только для QPushButton и QProgressBar.
Я уже искал в Интернете, но я только что нашелсообщение об ошибке,неотвеченный вопрос, и наконецПользователь это предлагает повторно реализовать метод 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 СИГНАЛ, Я также пытался увеличить ширину каждого tabRect в paintEvent, но это не работает. Что я должен изменить?
Спасибо :)
Кстати, вы не можете наследовать от QTabWidget, но от QTabBar;)
РЕДАКТИРОВАТЬ:
Решено! Просто поменял методsizeHint вtabSizeHint и это хорошо работает :)