Ich kann keine Möglichkeit finden, die Textausrichtung in einem QTabWidget festzulegen.Wie ändere ich die Textausrichtung in QTabWidget?
Nachdem ich eine Instanz dieses Widgets erstellt habe, habe ich seine TabPosition Eigenschaft auf West, aber ich wünschte, es zeigte Text/Label horizontal. Ich habe einen Blick auf die Qt's stylesheets, aber wie Sie sehen können, kann die text-align -Eigenschaft nur auf QPushButton und QProgressBar gesetzt werden.
Ich suchte bereits im Internet, aber ich fand gerade eine bugreport, eine non-answered question und schließlich a user, die vorschlägt, die paint() Methode zu re-implementieren. Vielleicht würde ich lösen, aber ich benutze Python (PyQt oder PySide) und ich weiß nicht, wie es geht.
Können Sie mir helfen?
EDIT: dank Teukamm, ich ein Stück Code geschrieben:
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_())
Und schließlich habe ich meinen Text ausgerichtet, wie ich erwartet hatte, aber ich habe ein wenig (groß?) Problem: Wenn Sie klicken auf die rechte Seite jedes Tabs, es sendet nicht die currentChanged SIGNAL. Ich habe auch versucht, die Breite jedes TabRect in paintEvent zu erweitern, aber es funktioniert nicht. Was soll ich ändern?
Danke
BTW :): Sie nicht aus QTabWidget, sondern von QTabBar erben könnte;)
EDIT:
gelöst! Nur änderte die Methode sizeHint in tabSizeHint und es funktioniert gut :)
Sie können die Paint-Methode in puQt nicht überschreiben? – Naruto
Ja, ich wollte diese Methode überschreiben, aber ich dachte, dass sie nicht in der Python-Implementierung enthalten war (weiß nicht genau, warum ich das vermutete ...)) Vielen Dank für Ihren Kommentar :) – Markon