QListView显示图片缩略图速度慢

fariel_zhang 2011-05-20 02:41:52
继承QAbstractItemDelegate重载了
void paint(QPainter *painter, const QStyleOptionViewItem &option,const QModelIndex &index) const;
QSize sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index ) const;
显示640X512大小的图片速度还好,但是显示分辨率大的图片就很卡,而且图片很多的时候也很卡,在pc上明显可以感受到卡,还可以忍受,但是到了arm板子上,就受不了了。

void BaseFileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
const QFileSystemModel *model = qobject_cast<const QFileSystemModel *>(index.model());
QPixmap pixmap(model->filePath(index));
painter->drawPixmap(option.rect, pixmap);
painter->setPen(QPen(Qt::red));
}

QSize BaseFileDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
Q_UNUSED(option);

const QFileSystemModel *model = qobject_cast<const QFileSystemModel *>(index.model());
QImage image(model->filePath(index));
return image.size() / 2;
}


有个比较奇怪的问题就是,在paint执行的过程中,qDebug的结果显示,其运行了三次,这是啥原因?
究竟有什么好的办法,能显示缩略图的时候不卡哇?
...全文
592 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fariel_zhang 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shj_1011 的回复:]

楼主:
你好“已经用另外的一套方法搞定,结了”,请问你是怎么解决的?
[/Quote]
我的解决办法啊,就是用label去显示图片,用了一个stackwidget,第一页放一个treeview然后第二页放一个widget,里面放置kabel,同时label个数以及layout根据图片数量来动态load
shj_1011 2011-11-08
  • 打赏
  • 举报
回复
楼主:
你好“已经用另外的一套方法搞定,结了”,请问你是怎么解决的?
fariel_zhang 2011-06-30
  • 打赏
  • 举报
回复
已经用另外的一套方法搞定,结了
fariel_zhang 2011-05-20
  • 打赏
  • 举报
回复
在paint函数中也尝试用load image的办法,但是还是卡

QImage image;
image.load(model->filePath(index));
painter->drawImage(option.rect,
image.scaled(image.size()).scaled(image.width() / 4, image.height() /4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));

painter->setPen(QPen(Qt::red));


16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧