Como alterar o alinhamento do texto no QTabWidget?
Não consigo encontrar uma maneira de definir o alinhamento do texto em um QTabWidget.
Depois de criar uma instância deste widget, defini seutabPosition para West, mas eu gostaria que ele mostrasse texto / etiqueta horizontalmente. Eu dei uma olhada no Qt'sfolhas de estilo, mas como você pode ver, oalinhamento de texto A propriedade só pode ser definida em QPushButton e QProgressBar.
Eu já procurei na web, mas encontrei umrelatório de erro, umapergunta não respondida, e finalmenteum usuário isso sugere reimplementar o método paint (). Talvez eu resolvesse, mas estou usando Python (PyQt ou PySide) e não sei como fazê-lo.
Pode me ajudar?
EDIT: graças a Teukamm, escrevi um pouco de código:
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_())
E finalmente, meu texto está alinhado conforme o esperado, mas tenho um pequeno (grande?) Problema: quando você clica no lado direito de cada botão da guia, ele não envia ocurrentChanged SINAL. Também tentei expandir a largura de cada tabRect, no paintEvent, mas não funciona. O que devo mudar?
Obrigado :)
BTW: você não pôde herdar do QTabWidget, mas do QTabBar;)
EDITAR:
Resolvido! Apenas mudei o métodosizeHint notabSizeHint e funciona bem :)