gpt4 book ai didi

QTreeView 内存消耗

转载 作者:行者123 更新时间:2023-12-04 12:59:53 26 4
gpt4 key购买 nike

我现在正在测试 QTreeView 功能,我对一件事感到惊讶。似乎 QTreeView 内存消耗取决于项目数 O_O。这是非常不寻常的,因为这种类型的模型 View 容器只跟踪显示的项目,其余项目都在模型中。我用一个简单的模型编写了以下代码,该模型不包含任何数据,只是报告它有 1000 万个项目。使用 MFC、Windows API 或具有此类模型的 .NET 树/列表将不占用内存,因为它将仅显示 10-20 个可见元素,并且会在滚动/展开项目时请求模型更多。但是对于 Qt,这种简单的模型会导致大约 300Mb 的内存消耗。增加项目数量会增加内存消耗。也许有人可以提示我我做错了什么? :)

#include <QtGui/QApplication>
#include <QTreeView>
#include <QAbstractItemModel>

class CModel : public QAbstractItemModel
{
public: QModelIndex index
(
int i_nRow,
int i_nCol,
const QModelIndex& i_oParent = QModelIndex()
) const
{
return createIndex( i_nRow, i_nCol, 0 );
}

public: QModelIndex parent
(
const QModelIndex& i_oInex
) const
{
return QModelIndex();
}

public: int rowCount
(
const QModelIndex& i_oParent = QModelIndex()
) const
{
return i_oParent.isValid() ? 0 : 1000 * 1000 * 10;
}

public: int columnCount
(
const QModelIndex& i_oParent = QModelIndex()
) const
{
return 1;
}

public: QVariant data
(
const QModelIndex& i_oIndex,
int i_nRole = Qt::DisplayRole
) const
{
return Qt::DisplayRole == i_nRole ? QVariant( "1" ) : QVariant();
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeView oWnd;
CModel oModel;
oWnd.setUniformRowHeights( true );
oWnd.setModel( & oModel );
oWnd.show();
return a.exec();
}

最佳答案

如果我在示例源中用 QTableView 替换 QTreeView,则不会消耗内存。因此,似乎 QListView 和 QTreeView 不打算用于大量数据,而必须使用 QTableView。

关于QTreeView 内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2857008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com