В QtGUI кто еще вызывает метод рисования? - PullRequest
0 голосов
/ 04 октября 2019

Я использую QStyledItemDelegate в QListView.

class ViewDelegate : public QStyledItemDelegate
   {
protected:
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
    QStyleOptionViewItem opt = option;

    initStyleOption(&opt, index);
    QImage image = index.model()->data(index.model()->index(index.row(), 0), Qt::ForegroundRole).value<QImage>();

    QStyle* style = opt.widget ? opt.widget->style() : QApplication::style();
    style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget);

    QRect rect = opt.rect;

    float zoomFactor = 1.0;

    // Zoom When Selected
    if (opt.state & QStyle::State_Selected)
    {
        zoomFactor = 1.5;
    }
    painter->drawImage(QRect(rect.left(), rect.top(), image.width() *zoomFactor, image.height()* zoomFactor), image);

}

Поскольку он используется как

QListView* listView = new QListView();
listView->setItemDelegate(new ViewDelegate());

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...