Qt: Checkbox & QItemDelegate - не рисовать флажок, когда происходит выбор - PullRequest
0 голосов
/ 15 декабря 2010

Я использую QItemDelegate в сочетании с флагом QTableView IsUserCheckable, чтобы нарисовать центрированный столбец флажка.Все работало нормально, пока я не включил выбор строки для таблицы.

Когда происходит выбор, синий фон выделения - это единственное, что окрашивается, и флажки больше не отображаются.Вот мой код, который я использую, чтобы нарисовать флажок внутри делегата.

void CheckboxDelegate::drawCheck(QPainter* painter, QStyleOptionViewItem const& option, QRect const& rect, Qt::CheckState state) const
{
    QSize size = check(option, option.rect, Qt::Checked).size();
    QRect checkboxRect = QStyle::alignedRect(option.direction, Qt::AlignCenter, size, option.rect);
    QItemDelegate::drawCheck(painter, option, checkboxRect, state);
}

Есть какие-нибудь идеи, почему это неправильно рисует, когда сделан выбор?

1 Ответ

0 голосов
/ 20 июля 2011

Трудно быть уверенным, что мой ответ поможет вам из-за нехватки кода, который публикуется, но я думаю, что ваша проблема в том, что художник не только рисует QRect, но и QItemDelegate.Это означает, что если вы не укажете ему, какой именно цвет QRect вы хотите, он закрасит его тем же цветом, что и вся ячейка.

Если это так, то ваш QRect все еще там., но это просто тот же цвет, что и остальное содержимое ячейки.

Вы можете изменить цвет художника для QRect, выполнив painter.setPen(QColor.red);

Опять же, я неу меня много кода, но если вы хотите, чтобы чек был другого цвета, вам нужно установить его на другой цвет.

Если вы предоставите больше кода, я мог бы ответить вам более четко.

...