2

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

4

3 回答 3

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

于 2013-06-07T14:44:42.603 回答
0

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

于 2016-12-04T05:05:40.193 回答
0

似乎没有办法在模型视图 conecpt 中设置样式表。但存在的是 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++ 的翻译留给读者。

于 2020-09-15T12:04:31.443 回答