逛奔的蝸牛
我不聰明,但我會很努力
:: ::
新隨筆
:: :: ::
管理
::
隨筆分類
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
逛奔的蝸牛
閱讀(13479)
評論(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 © 逛奔的蝸牛
久久九九兔免费精品6
|
久久久久久午夜成人影院
|
亚洲午夜久久久久久久久电影网
|
久久久中文字幕日本
|
久久精品国产一区二区三区不卡
|
久久精品亚洲欧美日韩久久
|
999久久久免费国产精品播放
|
伊人久久大香线蕉影院95
|
久久青青草原综合伊人
|
精品久久久久久无码免费
|
区亚洲欧美一级久久精品亚洲精品成人网久久久久
|
亚洲国产天堂久久综合网站
|
天堂久久天堂AV色综合
|
国产欧美一区二区久久
|
亚洲欧美日韩精品久久亚洲区
|
人妻中文久久久久
|
国产精品天天影视久久综合网
|
亚洲国产成人久久综合区
|
亚洲精品无码久久久久AV麻豆
|
囯产极品美女高潮无套久久久
|
精品久久久久久亚洲精品
|
亚洲午夜精品久久久久久app
|
亚洲伊人久久精品影院
|
大伊人青草狠狠久久
|
久久久久国产精品麻豆AR影院
|
久久综合亚洲色一区二区三区
|
久久久久久狠狠丁香
|
久久se精品一区二区影院
|
国产精品久久久久久搜索
|
久久e热在这里只有国产中文精品99
|
亚洲伊人久久成综合人影院
|
久久久无码一区二区三区
|
久久精品国产亚洲7777
|
日韩精品久久无码人妻中文字幕
|
欧洲国产伦久久久久久久
|
中文字幕一区二区三区久久网站
|
一本色道久久综合
|
久久精品成人一区二区三区
|
久久久噜噜噜久久熟女AA片
|
99久久香蕉国产线看观香
|
99久久精品免费看国产一区二区三区
|