как я помещаю Значок QTableWidgetItem в центр ячейки

Необходимо использовать декомпилятор. Другие предложили JAD, существуют другие опции, JAD является лучшим.

я повторю комментарии, что можно проиграть немного по сравнению с кодом первоисточника. Это собирается выглядеть особенно забавным, если код использовал дженерики, из-за стирания.

8
задан Glorfindel 7 May 2019 в 16:04
поделиться

4 ответа

Вы можете повлиять на положение значка по отношению к тексту с помощью параметров стиля.

Если QTableWidgetItem построен без какого-либо текста (через конструктор, который не принимает текстовый аргумент ), то элемент данных Qt :: DisplayRole не установлен, и текст не будет отображаться и не повлияет на прямоугольник отображения значков.

Я смог повлиять на положение значка QTableWidgetItem, создав подкласс QTableWidget, переопределив viewOptions и установив поле decorationAlignment параметров просмотра, например:

QStyleOptionViewItem MyTableWidget::viewOptions() const
{
    QStyleOptionViewItem option = QTableWidget::viewOptions();
    option.decorationAlignment = Qt::AlignHCenter | Qt::AlignCenter;
    option.decorationPosition = QStyleOptionViewItem::Top;
    ...
    return option;
}
8
ответ дан 5 December 2019 в 08:52
поделиться

Я думаю, что это базовое поведение QTableWidgetItem, которое не позволяет вам изменять что-либо, связанное со значком ...

Взгляните на пример «Пример звездного делегата» из Qt, может быть, вы найдете что-нибудь интересное для своей проблемы! Это небольшая работа, но вы сможете «нарисовать» ячейку по-другому, если она не содержит никакого текста!

Надеюсь, это немного поможет!

2
ответ дан 5 December 2019 в 08:52
поделиться

Похоже, вы должны создать подкласс QTableWidgetItem и переписать функцию paintEvent , в которой вы сможете рисовать значок там, где хотите.

1
ответ дан 5 December 2019 в 08:52
поделиться

Вам необходимо использовать делегата

0
ответ дан 5 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: