您可以通过这种方式自己重新实现组合框绘图例程(来自我正在处理的项目的代码片段):
class CustomComboBox(QtGui.QComboBox):
...
def paintEvent(self, evt):
painter = QtGui.QStylePainter(self)
painter.setPen(self.palette().color(QtGui.QPalette.Text))
option = QtGui.QStyleOptionComboBox()
self.initStyleOption(option)
painter.drawComplexControl(QtGui.QStyle.CC_ComboBox, option)
textRect = QtGui.qApp.style().subControlRect(QtGui.QStyle.CC_ComboBox, option, QtGui.QStyle.SC_ComboBoxEditField, self)
painter.drawItemText(
textRect.adjusted(*((2, 2, -1, 0) if self.isShown else (1, 0, -1, 0))),
QtGui.qApp.style().visualAlignment(self.layoutDirection(), QtCore.Qt.AlignLeft),
self.palette(), self.isEnabled(),
self.fontMetrics().elidedText(self.currentText(), QtCore.Qt.ElideRight, textRect.width())
)
...
painter.drawItemText
调用是绘制文本的位置。