C++ 在QtGUI中,还有谁调用paint方法?
我正在QListView中使用QStyledItemDelegateC++ 在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;
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());