Найти - Пользователи
Полная версия: [PyQt4] Как изменить font отдельному элементу в в QTreeView
Начало » GUI » [PyQt4] Как изменить font отдельному элементу в в QTreeView
1
allive
Доброго времени суток.
Я совсем еще мало знаком с PyQt, поэтому прощу помощи здесь, т.к более достойного места найти не смог.

Дано:
QtGui.QTreeView()
простенькая модель из какого-то примера идущего в коробке с PyQt
Все это отображает древовидную структуру (пусть это будут обычные файлы и папки)

Хочется:
Что бы каждый заголовок группы отображался, например, 16-ым dejavu-sans bold

PS:
Ничего в голову не пришло, кроме, как рисовать текст переопределяя метод paint в QItemDelegate (drawText)
Но мне кажется, что есть более красивое решение.
Надеюсь на ваш совет.
dimabest
в классе модели тебе нужно изменить метод data()

в общем виде он выглядит примерно так:
    def data(self, index, role):
if index.isValid():
if role == Qt.DisplayRole:
value = self.mytable[index.row()][index.column()]
return QVariant(value)

return QVariant()
Если индекс невалидный - возвращается пустой QVariant().
Иначе возвращаем данные в зависимости от роли. Роли бывают разные, полный список по ссылке http://doc.trolltech.com/4.6/qt.html#ItemDataRole-enum

Qt.DisplayRole - это текст, который отображается в ячейках QTableView или QTreeView.
Для шрифта есть роль Qt.FontRole, для цвета текста Qt.ForegroundRole


вообщем код превратится в нечто такое:
    def data(self, index, role):
if index.isValid():
if role == Qt.DisplayRole:
value = self.my_data[index.row()][index.column()]
return QVariant(value)
if role == Qt.ForegroundRole:
return QColor(Qt.red)
if role == Qt.FontRole:
font = QFont()
# выставляем размеры, семейство...
return font

return QVariant()
allive
Заработало !
Большое спасибо, хоть начал понемногу понимать принцип работы
Dark_Cs
Подскажите, в чем может быть проблема: return QVariant() приводит к ошибке
TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated
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