逛奔的蜗牛
我不聪明,但我会很努力
:: ::
新随笔
:: :: ::
管理
::
随笔分类
C/C++(67)
(rss)
Cocoa(26)
(rss)
Java(186)
(rss)
Mac(126)
(rss)
OpenGL(25)
(rss)
Qt(164)
(rss)
Qt自定义Widget(12)
(rss)
Xcode(5)
(rss)
其他编程(94)
(rss)
设计模式(2)
(rss)
外语(4)
(rss)
网文(74)
(rss)
搜索
最新评论
1. re: Java:用 Java 7 运行 IDEA 13
great post
--contact form
Qt: QStandardItemModel的极品提示
当你使用QStandardItemModel(model)与QTableView显示数据时, 如果数据量比较大, 如几千上万条, 每次给model填充数据时, 只是使用model->clear()来清空数据, 然后再填充, 速度会非常的慢. 但如果是使用delete model; model = new QStandardItemModel()显示的删除model, 然后再创建一个model, 这样显示速度会非常的快, 不知何故.
posted on 2009-08-28 07:21
逛奔的蜗牛
阅读(13452)
评论(5)
编辑
收藏
引用
所属分类:
Qt
评论
#
re: Qt: QStandardItemModel的极品提示
2010-02-02 17:20
leoxiaofei
请问一下,model怎样填充速度快?
我填充1000行数据(每行14列)用了20多秒
不知道是不是我填充的方法错了,能否指点一下,谢谢。
回复
更多评论
#
re: Qt: QStandardItemModel的极品提示
2010-02-02 17:28
暗金装备
@leoxiaofei
感觉应该是你的程序如在取得这些数据的时候有什么地方出问题了. 显示这些数据不会需要这么长时间. 不知道你具体是怎么做的, 不好说.
回复
更多评论
#
re: Qt: QStandardItemModel的极品提示
2010-02-02 19:01
leoxiaofei
感谢您的回答,我实现的主要代码如下:
*.h文件
QstandardItemModel *model = new QstandardItemModel();
*.cpp文件
addModelItem(QAbstractItemModel *ml,const QString &id,...(这里有14个QString))
{
ml->insertRow(0);
ml->setData(ml->index(0,0),id);
...(一共set14个)
}
这是个函数()
{
for(int i = 0;i<1000;i++)
{
addModelItem(model,"1",...(14个字符串));
}
}
我实在不知道问题在哪,插入这1000条记录就用了20多秒。您如有时间,请指点一下,谢谢。
回复
更多评论
#
re: Qt: QStandardItemModel的极品提示
2010-02-02 19:21
暗金装备
看例子中的解释, 应该就知道问题在哪了.
Qt很多时候表现得有点怪, 必须用怪招才能解决. 在我写项目的过程中, 遇到过很多, 感觉逻辑上没有任何问题, 但却不行, 换一点点方式又可以了, 就像上面文中列出来的一样.
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QStandardItemModel *model = new QStandardItemModel();
QTableView *table = new QTableView();
// 如果事先给 table设置了 model而不预指定好要存储的数据的行数,则会非常慢
// table->setModel(model); /// [[1]]
// model->setRowCount(1000); /// [[1]]
model->setColumnCount(14);
for (int i = 0; i < 1000; ++i) {
model->setItem(i, 0, new QStandardItem("1"));
model->setItem(i, 1, new QStandardItem("2"));
model->setItem(i, 2, new QStandardItem("3"));
model->setItem(i, 3, new QStandardItem("4"));
model->setItem(i, 4, new QStandardItem("5"));
model->setItem(i, 5, new QStandardItem("6"));
model->setItem(i, 6, new QStandardItem("7"));
model->setItem(i, 7, new QStandardItem("8"));
model->setItem(i, 8, new QStandardItem("9"));
model->setItem(i, 9, new QStandardItem("10"));
model->setItem(i, 10, new QStandardItem("11"));
model->setItem(i, 11, new QStandardItem("12"));
model->setItem(i, 12, new QStandardItem("13"));
model->setItem(i, 13, new QStandardItem("14"));
}
// 如果你是先把数据加载到model中的,那么事先不指定要存储的行数。
// 先把数据存储到model中 ,然后再给table设置model,这样也会很快 .
table->setModel(model); /// [[2]]
table->show();
return app.exec();
}
回复
更多评论
#
re: Qt: QStandardItemModel的极品提示
2010-02-02 19:47
leoxiaofei
非常感谢,看来问题出在这里。
不过插入1w条记录,还是用了6秒以上。
内存占用了50M以上,看来是我的设计有问题,但是用QSqlTableModel就不占内存,不知道为什么~~汗~我是新手,谢谢您的指教。
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
Qt:编码范围
Qt:Windows Qt 去掉选中的虚线框
Qt:定制qDebug等输出的格式
Qt:给QWidget添加shadow效果
Qt:Q_DECLARE_METATYPE和qRegisterMetaType
Qt:绘制带高光的按钮
Qt:FontMetrics
Mac:Mac下安装PHP, MySql开发环境
Qt:无标题栏无边框程序的拖动和改变大小
Qt:Use Third Party Libraries
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 逛奔的蜗牛