如何在Qlistview中为单个项目设置样式表?

时间:2013-06-07 10:08:28

标签: qt qt4 qlistview qtstylesheets qstandarditemmodel

我有一个包含QStandardItems的QListView。如何根据获得的QModelIndex为Qlistview中的单个项设置样式表?

3 个答案:

答案 0 :(得分:0)

如果您使用QListWidget而不是QListView,则可以调用QListWidget::setItemWidget(),并且可以通过将样式表应用于您添加的项目来自定义各个项目的外观。您需要确保您的项目窗口小部件类继承自QWidget,并且您可以在构造函数中使用QSS将样式应用于窗口小部件:

setStyleSheet("WidgetItem:pressed { background-color: #444444; }");

以下是对QSS的引用:http://qt-project.org/doc/qt-4.8/stylesheet-examples.html

答案 1 :(得分:0)

我仍然看到Qt 5.7的Qt文档中记录的Widget类 - Qt Widgets Widgets Classes。 参考:http://doc.qt.io/qt-5/widget-classes.html

答案 2 :(得分:0)

似乎没有办法在Model-View概念中设置样式表。但是存在的是FontRole。如果要使条目变为粗体或斜体或更改大小,则FontRole可以做到这一点。如果要更改颜色,则必须找到其他解决方案。

以下是在python中将某些条目加粗的示例:

def data(self, index, role=QtCore.Qt.DisplayRole):
    # use parent class to get unaltered result
    res = super().data(index, role=role)
    if role == QtCore.Qt.FontRole:
        # modify FontRole
        if index.row() = 3:
            # row number 3 should be bold
            if res is None:
                # parent class didn't return a QFont so make one
                res = QtGui.QFont()
            # set bold attribute in font
            res.setBold(True)
    return res

上面的data()方法将第4行设置为粗体(行从0开始计数)。我留给读者翻译C ++。