2012-03-22 31 views
2

我想要开发一个使用Qt框架的图像库应用程序。该应用程序加载所选文件夹中的所有图像,并使用QListView控件显示这些图像。 但现在我想通过加载只有用户可见的图像来减少内存消耗。由于没有直接的功能来获得视图中所有可见的项目,我无法实现这一点。简单的方法来获取QListView中的所有可见项目

回答

0

我想你需要的是实现自己的模型(看看到QAbstractListModel文档),这样的方式,你可以决定你的时候必须加载更多的图像才能显示,并且可能会释放一些不可见的图像。

1

我发现它!你必须在listwidget的垂直滚动条连接到一个信号:

connect(ui->listWidget->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(launch_timer())); 

每当用户滚动,被省略的valueChanged(INT)信号!问题在于,每当listwidget的垂直滚动条的值发生变化时,您都不应该在此问题中运行webclectic提供的代码,因为程序在没有多少代码的情况下运行时间会变得无法响应。

所以,你必须有单点定时器,并指向webclectic上面发布的函数。当launch_timer()被调用时,你做这样的事情:

if(timer->isActive()){ 
    timer->stop(); 
    timer->start(300); 
    } 
    else 
     timer->start(300); 

和定时器超时()信号将被连接到槽webclectic津津乐道。这样,如果用户快速滚动,只有最后一个项目会被更新。一般来说,它将被更新任何可见的超过300毫秒!

相关问题