QTreeView内存消耗

2024-01-26

我现在正在测试 QTreeView 功能,我对一件事感到惊讶。看来 QTreeView 内存消耗取决于项目计数 O_O。这是非常不寻常的,因为这种类型的模型视图容器仅跟踪正在显示的项目,其余项目都在模型中。我用一个简单的模型编写了以下代码,该模型不包含任何数据,仅报告它有 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();
}

如果我在示例源中将 QTreeView 替换为 QTableView,则不会消耗内存。所以看来QListView和QTreeView不适合用于大量数据,而必须使用QTableView。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QTreeView内存消耗 的相关文章

  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 通过CMake实现Qt项目

    我正在尝试通过 Cmake 构建并运行非常简单且基本的 Qt 示例 删除 pro 文件 以下是Qt项目的代码 自动生成的Qt项目的目录结构为 Cmake my project name headers mainwindow h source
  • 如何在qt中进行异步文件io?

    我想知道如何在qt中实现异步文件io 这在普通的 qt 中是否可以实现 或者有人需要使用另一个库 例如 libuv 来实现这样的事情 我正在查看 QDataStream 但即使它是一个 流 它也不是非阻塞的 我想一种解决方案是制作一个在内部
  • SWI-Prolog 与 C++ 接口的问题

    我试图让 SWI Prolog 与 C 很好地配合 现在束手无策 现在 在我开始准确解释我的问题是什么之前 我想首先说明我的项目是关于什么的以及我选择了哪些工具来开发解决方案 我的教授分配给我的任务是开发一个 GUI 程序 作为 SWI p
  • 在哪里可以找到 QT 5.3.0 命令提示符

    用于学习Qt的书 C gui programming with qt 4 2nd 版 我需要Qt的命令提示符 我已经安装了Qt 5 3 0 creator 5 3 0开源 但不知道它的命令提示符在哪里 有人可以帮助我吗 我认为您正在寻找的是
  • Qml 和模糊图像

    我想使用 QML 实现模糊效果 我找到了有关 效果 模糊 的参考资料 例子 http qt gitorious org lscunha qt components lscunha qt components blobs d78feec567
  • QML:无法读取未定义的属性“xxx”

    ApplicationWindow id root property string rootName rootName visible true width 800 height 400 title qsTr WatchFace Maker
  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • QComboBox 下拉项边距

    我想设计我的风格QComboBox为下拉项目留出边距 现在是这样的 我想要这样的东西 我尝试过 QComboBox QAbstractItemView item margin 3px 但它不起作用 你能帮我解决这个问题吗 您想在项目之间设置
  • QMutex 是否需要是静态的,以便此类实例的其他线程调用知道暂停其操作?

    从多个线程调用以下附加函数 我不希望数据重写附加 因为计数器尚未增加 除了当前使用 Append 的线程之外 这是否会挂起所有进入的线程 或者其他线程会继续运行而不追加数据吗 互斥锁是否需要是 静态 的 或者每个实例都知道要暂停操作吗 如果
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • QStyledItemDelegate 绘制自定义小部件失败

    在我的一个项目中 我使用的是QTableWidget为了显示一些复杂的计算结果 为了提高表格的可读性 我需要在单个表格单元格内显示两个对齐的值 后来我想通过使用颜色或箭头等来进一步自定义小部件 为此我源自QStyledItemDelegat
  • 第一次信号发射后自动断开

    我正在从文件加载网页 然后替换其中的一些 html self template web page QtWebKit QWebPage self template web page mainFrame load QtCore QUrl tem
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我

随机推荐

  • 没有 Google Fonts 2 的 Bootstrap CSS (Bootswatch)

    我正在开发一个网页 并使用 Bootswatch 进行样式设置 有时我必须离线工作并在本地托管 不幸的是 Bootswatch 无法离线使用 因为它使用了 Bootstrap css 版本 并且开头带有额外的字体 import url ht
  • VBA 词。超链接的HighlightColorIndex 返回 9999999

    我正在 Word 中编写一个宏 以删除突出显示的所有超链接的突出显示wdGray25 对所有超链接的搜索是通过以下方式完成的 For Each oLink In ActiveDocument Hyperlinks If oLink Rang
  • 在IntelliJ IDEA中添加AAR而不使用gradle

    如何将aar module添加到IDEA中的项目中 没有gradle 使用ant 对于 Android Studio 这几乎是一样的 我找到的唯一解决方案是将 aar 内容提取到文件夹中以与导入模块过程一起使用 File gt Projec
  • 构建应用程序时出现“找不到资源”错误

    我想将我的 Eclipse 项目迁移到 Android Studio 我曾经使用 minSdkVersion 8 构建项目 但我想添加需要 minSdkVersion 10 的新功能 我正在运行 Android Studio 1 1 0 导
  • Angular:ng-init 不在负载上运行

    我已经看到了一些有关 ng init 问题的堆栈溢出示例 尽管我似乎找不到使用控制器引用它的示例 我通过在 html 文件中包含以下内容来调用控制器中的函数 div class tab container 在控制器中 scope init
  • R:控制直方图箱的数量

    我正在使用 hist 函数来分析我生成的一些数据 对于分析测定 我想精确控制直方图箱的数量 我知道 中断参数 并且我可以看到 在许多情况下 垃圾箱的数量与中断的数量有直接关系 即 no bins no breaks 1 由于 R 的算法 情
  • 花栗鼠碰撞检测

    我对花栗鼠完全陌生 而且我刚刚使用它几天 所以我猜这是非常明显的事情 但是我找不到任何相关文档 Chipmunk 中是否有任何回调或方法可以告诉您 2 个给定的形状发生了碰撞 如果不是 最好的方法是简单地在精灵上使用 cgrect cont
  • iOS 6 自定义 URL 方案启动图像错误

    我已经在我的应用程序中实现了自定义 URL 方案 另外 我使用以下命令对启动图像有不同的名称UI启动图像文件键入 info plist 文件说 如果您的应用程序支持一个或多个自定义 URL 方案 它还可以 为每个 URL 方案提供自定义启动
  • 无法从外部机器连接到kafka

    我从 Apache Kafka 开始 当我尝试从外部机器连接时遇到问题 使用下面的配置 如果应用程序和 docker 在同一台机器上运行 则一切正常 但是当我将应用程序放入机器 A 并将 docker 放入机器 B 时 应用程序无法连接 我
  • 在 ng-repeat 中生成 ng-model

    我一直在阅读一些主题 但找不到我所坚持的这个主题的解决方案 我正在尝试添加ng model inside NG 重复像这样的东西 span span
  • CUDA:是否可以将全部 48KB 片上内存用作共享内存?

    我正在 Windows 7 64 位 SP1 上使用 CUDA Toolkit 4 0 和 Visual Studio 2010 Professional 为 GTX 580 开发 CUDA 应用程序 我的程序比典型的 CUDA 程序更占用
  • 创建条带摘要报告

    我最近将付款处理切换到 Stripe 我现在需要为我们的财务部门创建一份报告 显示指定日期范围内的交易汇总 我已经开始创建一个简单的 PHP 网页 并使用 Stripe PHP 库 它将提供以下摘要 交易数量 交易金额 退款次数 退款金额
  • 使用 Mongoose 时出现 MongoDB 弃用警告

    我正在使用猫鼬版本5 2 13 我想是最新的 但是当我尝试执行 findOneAndUpdate 查询时 Mongo 会抛出弃用警告 DeprecationWarning collection findAndModify 已弃用 使用 改为
  • Android OpenCV:无法 dlopen 相机包装库

    如同OpenCV 2 3 如何从Android相机捕获帧 https stackoverflow com questions 7198912 opencv 2 3 how to capture frames from android cam
  • 如果我单击 overrideredirect 窗口并移动它(窗口),如何获得更好的窗口位置?

    当我单击窗口时 在我的例子中 当我单击self top frame and self app name 要移动它 窗口位置将更改为 0 x 和 y 坐标 所以如果我想移动窗口 窗口就会移动到右侧 我可以修复它 以便窗口不会移动到右侧 或从我
  • Javascript使用datejs解析RFC3339日期时间

    我在使用来自 Google Calendar API 的日期格式的 datajs 时遇到问题 我认为日期时间格式是 RFC3339 这是从日历 api 返回的示例日期时间 2012 01 05T08 45 00Z 这是来自 datejs 文
  • 使用 SQLAlchemy 和 PostgreSQL 进行 Flask 单元测试耗尽数据库连接

    我正在使用 Flask SQLAlchemy 和 PostgreSQL 运行一套相当简单的测试用例 使用应用程序工厂 我定义了一个基本单元测试类 如下所示 class BaseTestCase unittest TestCase def s
  • Ionic devapp 只是搜索

    我在使用 Ionic DevApp 应用程序时遇到问题 我使用它在浏览器中打开的 ionicserve c 命令 但在我的设备上它只是寻找 侦听网络上的应用程序 它没有出现在我的设备上 但是我已经在其他 2 台设备上进行了测试 并且项目出现
  • 如何禁用 jquery 数据表中的显示条目属性

    我刚刚开始使用 jquery 我使用 jquery 数据表插件来启用表视图 我需要禁用显示条目属性 谁能帮助我在哪个js中我需要禁用该属性 我已关注此链接 但没有帮助 不知道要修改哪个js here http datatables net
  • QTreeView内存消耗

    我现在正在测试 QTreeView 功能 我对一件事感到惊讶 看来 QTreeView 内存消耗取决于项目计数 O O 这是非常不寻常的 因为这种类型的模型视图容器仅跟踪正在显示的项目 其余项目都在模型中 我用一个简单的模型编写了以下代码