首页 > 代码库 > Qt表格之Model/View实现
Qt表格之Model/View实现
很多开发中都用到了表格,如何使用Qt做表格?比较简单的,我们可以使用QTableWidget,但是它有个问题,就是数据量不能太大,一旦数据量比较大的话就会带来内存问题。Qt还给我们提供了一样利器--Model/View。模型视图,接触Qt的都不会陌生,对新手来说可能不太好理解,没关系,Qt提供了强大的Assist文档和更加直观的Demo,相信看过之后使用来说就没有问题了。本篇文章来列出一个简单的例子,使用的就是表格的模型视图,在代码中给出了简单的注释说明。为什么要采用这种方式?试过的人都可以看到它的显示效率是比QTableWidget要高出许多的。其实,测试发现,它的行数有个上线,也就是说把全部数据载入内存中,数据时几千万行。不过,这个限制不是问题,因为你不可能一眼看几千万行的数据,合理的设计可以“显示”过亿条数据,当然,注意我说的“合理的设计”,以后有时间再具体写下代码。
#ifndef MYTABLEMODEL_H #define MYTABLEMODEL_H #include <QAbstractTableModel> #include <QSortFilterProxyModel> #include <QVector> #include <QStringList> /************************************************************************/ /* 模型数据类 */ /************************************************************************/ class MyModelItem { public: MyModelItem() { m_id = 0; m_name = ""; m_value = http://www.mamicode.com/0;>#include "MyTableModel.h" #include <QIcon> static const int col_id = 0; static const int col_name = 1; static const int col_value = http://www.mamicode.com/2;>在应用程序中仅仅使用在主窗口ui中加入了QTableView,然后调用了setModel。#include "TestModelView.h" TestModelView::TestModelView(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { ui.setupUi(this); createExampleData(); ui.tableView->setModel(m_model); } TestModelView::~TestModelView() { } void TestModelView::createExampleData() { m_model = new MyTableModel(this); QVector<MyModelItem*>* dataModel = m_model->dataModel(); for (int i = 0; i < 100; i++) { MyModelItem* item = new MyModelItem; item->createExampleItem(); dataModel->push_back(item); } }Qt表格之Model/View实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。