Pyside6 QAbstractTableModel – заменить логическое значение значком, выровненным по центру ⇐ Python
Pyside6 QAbstractTableModel – заменить логическое значение значком, выровненным по центру
У меня есть класс GenericTableModel(QAbstractTableModel):, в котором я пытаюсь заменить логическое значение значками. У меня это работало, используя следующее:
if role == Qt.DecorationRole: значение = self.dataframe.iloc[index.row(), index.column()] if hasattr(value, 'dtype') и value.dtype == bool: если значение: return QIcon('static/icons/check-circle-fill.png') return QIcon("static/icons/icon_x.png") Но они были выровнены по левому краю, и мне бы хотелось, чтобы они были по центру.
Если я изменю роль на QDisplayRole, значки не будут отображаться, поскольку типом значения в это время всегда будет str. Думаю, это потому, что я неправильно понимаю эту роль.
Я добавил следующее и смог установить размер значка, но не выравнивание.
класс IconDelegate(QStyledItemDelegate): def initStyleOption(self, option, index): super().initStyleOption(опция, индекс) option.decorationSize = QSize(16, 16) # option.rect.size() Глядя на документы, я ожидаю, возможно, displayAlignment или textAlignment, но они кажутся недействительными.
Я подозреваю, что это основано на двух недоразумениях. Я думаю, что DecorationRole всегда предназначен для украшения левой части ячейки, и если я смогу получить правильную роль, это может сработать?
В любом случае, если кто-нибудь предложит мне помощь, я буду благодарен. Спасибо
У меня есть класс GenericTableModel(QAbstractTableModel):, в котором я пытаюсь заменить логическое значение значками. У меня это работало, используя следующее:
if role == Qt.DecorationRole: значение = self.dataframe.iloc[index.row(), index.column()] if hasattr(value, 'dtype') и value.dtype == bool: если значение: return QIcon('static/icons/check-circle-fill.png') return QIcon("static/icons/icon_x.png") Но они были выровнены по левому краю, и мне бы хотелось, чтобы они были по центру.
Если я изменю роль на QDisplayRole, значки не будут отображаться, поскольку типом значения в это время всегда будет str. Думаю, это потому, что я неправильно понимаю эту роль.
Я добавил следующее и смог установить размер значка, но не выравнивание.
класс IconDelegate(QStyledItemDelegate): def initStyleOption(self, option, index): super().initStyleOption(опция, индекс) option.decorationSize = QSize(16, 16) # option.rect.size() Глядя на документы, я ожидаю, возможно, displayAlignment или textAlignment, но они кажутся недействительными.
Я подозреваю, что это основано на двух недоразумениях. Я думаю, что DecorationRole всегда предназначен для украшения левой части ячейки, и если я смогу получить правильную роль, это может сработать?
В любом случае, если кто-нибудь предложит мне помощь, я буду благодарен. Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение