我找不到在 QTabWidget 中设置文本对齐的方法。
创建此小部件的实例后,我将其tabPosition属性设置为 West,但我希望它水平显示文本/标签。我已经查看了 Qt 的stylesheets,但是正如您所看到的,text-align属性只能在 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 SIGNAL。我还尝试在paintEvent 中扩展每个tabRect 的宽度,但它不起作用。我应该改变什么?
谢谢 :)
顺便说一句:您不能从 QTabWidget 继承,而是从 QTabBar 继承;)
编辑:
解决了!刚刚更改了 tabSizeHint 中的方法sizeHint并且效果很好:)