qt写了一个程序,有个界面需要显示260多张的图片,我现在是使用QLabel来显示图片,一张图片的大小是27k。
界面需要实时跟新。现在采用的办法是把所有的图片先加载到一个数组,不同的图片有27张。,根据需要再显示到QLabel。下面是我加载图片的代码:
bool HuaYangTableWidget::setPixmapOK(int id, QString string)
{
if (HX_Pixmap[id].isNull())
{
QImage image;
image.load( string );
HX_Pixmap[id] = QPixmap::fromImage( image.scaled(QSize(50,100), Qt::KeepAspectRatio) );
return true;
}
return false;
}
显示图片的代码:
void HuaYangTableWidget::setItemBMP(int row, int column, int id)
{
QLabel* plb = NULL;
if (item(row, column) == NULL)
{
plb = new QLabel();
setCellWidget(row, column, plb);
plb->setScaledContents(true);
}
if(plb)
{
if (id>=0 && id <= 12)
plb->setPixmap(HX_Pixmap[id]);
}
}
实际操作显示太慢了,想问问各位大神有什么效率更高的办法。
------解决方案--------------------
采用多线程的方式,加载图片,可以开启30-50个线程,每个线程的任务就是加载 图片数据至缓冲列表中,还需要建立好每个图片的缓冲对应显示控件的关系(如图片1 显示在控件1上之类的)。
------解决方案--------------------
楼主为什么不使用Qt下的delegate呢?显示一万张也行,delegate的出现就是为了解决大量数据显示而生