Найти - Пользователи
Полная версия: PyQt: можно ли для QListView изменить цвет, фон, шрифт для отдельной строки?
Начало » GUI » PyQt: можно ли для QListView изменить цвет, фон, шрифт для отдельной строки?
1
clinicalfilm
основной вопрос присутствует в названии темы, но вкратце: одномерная модель в QListView, вот хотелось бы как-нибудь через item воздействовать на параметры отображения строки (швет, размер, цвет фона .. итд)?
бывает ли такое?
mks
Насколько я помню, QListView берёт цвет, шрифт, и т.д. из модели. Надо в модели в методе data написать что то такое:
def data(self, index, role=Qt.DisplayRole):
    ...
    if role == Qt.FontRole:
        if index == <строка_номер_N>:
            return QVariant(QFont(<особенный_шрифт>))
        else:
            return QVariant(QFont(<обычный шрифт>))
    ...
Тоже самое сделать для Qt.BackgroundRole и всего что нужно изменить.
clinicalfilm
ok, спасибо буду попробовать .. я правда совсем ничего не понял из примера, но главное, что это хотя бы возможно .. )))
mks
Документация, а так же примеры по вашему вопросу тут. Класс QListView только отображает данные которые хранятся в классе модели, например это может быть наследник QAbstractItemModel. При прорисовке содержимого класс вида, в зависимости от того что он отображает, вызывает некоторые методы модели что бы получить текст для отображения, цвет фона ячейки, шрифт и т.д. Вы в вашей модели переопределяете этот метод и в зависимости от номера строки возвращаете нужный вам цвет и шрифт. В примере выше параметр role заведует тем что хочет узнать про ячейку класс вида. Я давненько не заглядывал в эту кухню, пишу по памяти, так что если что не так гуру меня поправят :) . Здесь запись семинара по MVC в Qt, для введения можно послушать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB