• 5483阅读
  • 0回复

QTableWidget显示图片时,为什么会占用那么多内存呢 [复制链接]

上一主题 下一主题
离线wanwan
 
只看楼主 倒序阅读 楼主  发表于: 2010-08-04
读取一个目录里的图片,放在QTableWidget里面显示,代码如下:

#include <QtCore>
#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMainWindow window;

    QTableWidget* tb = new QTableWidget(0,1,&window);
    tb->setGeometry(0,0,400,300);

    QDir dir("/data");
    int i=0;
    foreach(QFileInfo picFile,dir.entryInfoList(QStringList("*.jpg"))){

        QLabel *labelPic = new QLabel();
        labelPic->setPixmap(QPixmap(picFile.absoluteFilePath()));

        tb->insertRow(i);
        tb->setCellWidget(i,0,labelPic);
        i++;
    }
    window.show();

    return a.exec();
}

/data目录里有500张图片,这段代码运行之后,会占用非常大的内存.
将table的滚动条拖到下面, 发现有些图片没显示,拖放一下窗口才能显示,但此时上面的图片就又显示不出来了.似乎是内存不够,拖放时激活了table的redraw才显示出图片.
请问这个内存的问题怎么解决呢?

Qt是4.6.3.
快速回复
限100 字节
 
上一个 下一个