qt 实现图片列表懒加载demo
时间: 2024-01-19 10:04:50 浏览: 118
好的,我会为您找到相关的demo。以下是一份简单的qt图片列表懒加载demo代码,仅供参考:
```
#include <QApplication>
#include <QListView>
#include <QStandardItemModel>
#include <QtConcurrent>
void loadImage(int index, QStandardItemModel* model)
{
QImage img;
img.load("path_to_image_" + QString::number(index));
if (!img.isNull())
{
QStandardItem* item = model->item(index);
if (item)
{
item->setData(QVariant(QPixmap::fromImage(img)), Qt::DecorationRole);
}
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QListView listView;
QStandardItemModel model;
// 填充数据
for (int i = 0; i < 100; ++i)
{
QStandardItem* item = new QStandardItem(QString::number(i));
item->setIcon(QIcon(":/resources/loading_icon.png")); // 加载中的图标
model.appendRow(item);
}
listView.setModel(&model);
// 列表滚动时触发
QObject::connect(&listView, &QListView::viewPortEntered, [&](){
// 异步加载图片
QtConcurrent::run([&](){
int firstVisible = listView.indexAt(QPoint(0, 0)).row();
int lastVisible = listView.indexAt(QPoint(0, listView.viewport()->height())).row();
int loadCount = 5; // 每次加载的数量
for (int i = firstVisible; i < lastVisible; ++i)
{
loadImage(i, &model);
}
});
});
listView.show();
return a.exec();
}
```
通过这份demo代码,您可以学习和了解如何使用Qt实现图片列表懒加载。当用户滚动列表视图时,系统会异步加载可视范围内的图片,从而提升列表滚动的流畅度。希望能对您有所帮助。
阅读全文