Как установить таблицу стилей для одного элемента в Qlistview?
У меня есть QListView, содержащий QStandardItems . Как установить таблицу стилей для одного элемента в Qlistview на основе полученного QModelIndex?
2 ответа
Если вы используете QListWidget вместо QListView, вы можете вызвать QListWidget::setItemWidget() и настроить внешний вид отдельных элементов, применяя таблицу стилей к добавляемым элементам. Вам нужно убедиться, что ваш класс виджетов элементов наследуется от QWidget, и вы можете применять стили к виджету, используя QSS, как в конструкторе:
setStyleSheet("WidgetItem:pressed { background-color: #444444; }");
Вот ссылка на QSS: http://qt-project.org/doc/qt-4.8/stylesheet-examples.html
Я все еще вижу классы виджетов, документированные в Qt Documentation for Qt 5.7 - Классы виджетов Qt Widgets. Ссылка: http://doc.qt.io/qt-5/widget-classes.html
Кажется, нет способа установить таблицу стилей в конекпте 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++ читателю.