如何为QStandardItem设置样式表

2 投票
1 回答
2137 浏览
提问于 2025-04-20 17:56

下面的代码创建了一个简单的 QComboBox(下拉框)。不过,它不是用传统的 .addItem('myItemName') 方法来添加项目,而是先创建了 QStandardItem,然后通过 QComboBox.model().appendRow() 方法来添加。这样一来,我就可以单独访问每一个 QStandardItem 了。我在想,是否有办法给每一个 QStandardItem 单独设置 CSS 样式?我的目标是自定义下拉菜单中显示的每个项目。目前为止,我只能给整个下拉框统一设置一个 CSS 样式。

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class Combo(QtGui.QComboBox):
    def __init__(self, *args, **kwargs):
        super(Combo, self).__init__()        
        for each in ['Item_1','Item_2','Item_3','Item_4','Item_5']:
            item=QtGui.QStandardItem(each) 
            self.model().appendRow(item)

tree=Combo()
sys.exit(app.exec_())

1 个回答

3

看起来这个类没有 setStyleSheet 这个方法,但你可以使用 setBackgroundsetForegroundsetTextAlignment 这些方法。通过 QBrush,你可以自定义一些元素。当然,这些方法没有 styleSheets 那么强大,但总比没有好。

http://pyqt.sourceforge.net/Docs/PyQt4/qstandarditem.html

撰写回答