Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QtGUI中,还有谁调用paint方法?_C++_Qt_Model View Controller_Qtgui - Fatal编程技术网

C++ 在QtGUI中,还有谁调用paint方法?

C++ 在QtGUI中,还有谁调用paint方法?,c++,qt,model-view-controller,qtgui,C++,Qt,Model View Controller,Qtgui,我正在QListView中使用QStyledItemDelegate class ViewDelegate : public QStyledItemDelegate { protected: void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItem opt = option;

我正在QListView中使用QStyledItemDelegate

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());