No puedo encontrar la manera de establecer la alineación del texto en un QTabWidget.¿Cómo cambiar la alineación de texto en QTabWidget?
Después de crear una instancia de este widget, configuré su propiedad tabPosition en Oeste, pero me gustaría que mostrara texto/etiqueta horizontalmente. He echado un vistazo al Qt's stylesheets, pero como puede ver, la propiedad text-align solo se puede configurar en QPushButton y QProgressBar.
Ya he buscado en la web, pero acabo de encontrar un bugreport, un non-answered question, y finalmente a user que sugiere volver a implementar el método paint(). Tal vez lo resolvería, pero estoy usando Python (PyQt o PySide) y no sé cómo hacerlo.
¿Me puede ayudar?
EDIT: gracias a Teukamm, escribí un poco 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_())
Y finalmente he mi texto alineado como esperaba, pero tengo un poco (grande?) Problema: cuando hace clic en el lado derecho de cada botón de pestaña, no envía el currentChanged SIGNAL. También traté de ampliar el ancho de cada tabRect, en paintEvent, pero no funciona. ¿Qué debería cambiar?
Gracias :)
Por cierto: no se podía heredar de QTabWidget, pero a partir de QTabBar;)
EDIT:
resuelto! Acaba de cambiar el método sizeHint en tabSizeHint y funciona bien :)
¿no puede anular el método de pintura en puQt? – Naruto
Sí, quería anular ese método, pero pensé que no estaba incluido en la implementación de Python (no sé exactamente por qué supuse esto ...) Gracias por su comentario :) – Markon