我找不到在 QTabWidget 中设置文本对齐方式的方法。
在创建了该小部件的实例后,我将其 tabPosition 属性设置为西,但我希望它以水平方式显示文本/标签。 我查看了 Qt 的 样式表,但是如您所见,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_())
最后,我的文本对齐方式与我预期的一样,但是我有一个小问题(大问题?):当您单击每个选项卡按钮的右侧时,它不会发送{{link1:currentChanged SIGNAL}}。我还尝试在paintEvent中扩展每个tabRect的宽度,但它不起作用。我应该改变什么?
谢谢 :)
顺便说一下:您可能无法从QTabWidget继承,而应该从QTabBar继承;)
编辑:
解决了!只需更改< strong> tabSizeHint 中的< strong> sizeHint 方法即可正常工作 :)