标题:如何优化一个QStyledItemDelegate继承类的paint方法
作者:alexltr
日期:2020-04-20 12:36
内容:
我有一个model, 其中有一栏数据存储表示图片文件名的字符串,如“1.png;4.png;5.png”
现在我想通过用QStyledItemDelegate继承类来将这些图片在TableView中显示出来,主要的代码如下。
但有两个问题请教一下各位:
1. 速度比较慢,请问在代码上是否可以优化?或者这种需求是否有其它更好的解决办法?
2. 怎样更加有效的取得sizeHint?
谢谢!
multiimagesdelegate.h
#ifndef MULTIIMAGESDELEGATE_H
#define MULTIIMAGESDELEGATE_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
class MultiImagesDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
MultiImagesDelegate(QObject *parent = 0);
MultiImagesDelegate(const QString &imagesFolder, QObject *parent = 0);
void setImagesFolder(const QString &imagesFolder);
void paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
QSize sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
private:
QString mImagesFolder;
mutable int mWidthHint;
enum {ImageMargin = 1};
};
#endif
multiimagesdelegate.cpp
#include "multiimagesdelegate.h"
MultiImagesDelegate::MultiImagesDelegate(QObject *parent) :
QStyledItemDelegate(parent)
{
mWid ..
#1 [fu22507411 04-20 13:08]
给图片做缓存
#2 回 fu22507411 的帖子 [alexltr 04-20 13:25]
fu22507411:给图片做缓存 (2020-04-20 13:08)
谢谢回复。
能麻烦你稍微再具体一点吗?
#3 [dinjay 04-20 15:21]
model是重写的吧,data函数自义定一个类型,然后return value的时候直接返回qimage对象,delegate里就index()->data()取到的就是qimage对象了,一般托管里不做复杂耗时的数据读写处理。
#4 回 dinjay 的帖子 [alexltr 04-20 15:56]
dinjay:
model是重写的吧,data函数自义定一个类型,然后return value的时候直接返回qimage对象,delegate里就index()->data()取到的就是qimage对象了,一般托管里不做复杂耗时的数据读写处理。
是的。 这个我尝试一下。谢谢。