青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

清源游民 gameogre@gmail.com

Model類

基本概念
在model/view構架中,model為view和delegates使用數據提供了標準接口。在Qt中,標準接口QAbstractItemModel類中被定義。不管數據在底層以何種數據結構存儲,QAabstractItemModel的子類會以層次結構的形式來表示數據,結構中包含了數據項表。我們按這種約定來訪問model中的數據項,但這個約定不會對如何顯示這些數據有任何限制。數據發生改變時,model通過信號槽機制來通知關聯的views。

Model Indexes

為了使數據存儲與數據訪問分開,引入了model index的概念。通過model index,可以引用model中的數據項,Views和delegates都使用indexes來訪問數據項,然后再顯示出來。因此,只有model需要了解如何獲取數據,被model管理的數據類型可以非常廣泛地被定義。Model indexes包含一個指向創建它們的model的指針,這會在配合多個model工作時避免混亂。
QAbstractItemModel *model = index.model();

model indexes提供了對一項數據信息的臨時引用,通過它可以訪問或是修改model中的數據。既然model有時會重新組織內部的數據結構,這時model indexes便會失效,因此不應該保存臨時的model indexes。假如需要一個對數據信息的長期的引用,那么應該創建一個persistent model index。這個引用會保持更新。臨時的model indexes由QModelIndex提供,而具有持久能力的model indexes則由QPersistentModelIndex提供。在獲取對應一個數據項的model index時,需要考慮有關于model的三個屬性:行數,列數,父項的model index。


行與列
在最基本的形式中,一個model可作為一個簡單的表來訪問,每個數據項由行,列數來定位。這必不意味著
底層的數據用數組結構來存儲。行和列的使用僅僅是一種約定,它允許組件之間相互通訊??梢酝ㄟ^指定
model中的行列數來獲取任一項數據,可以得到與數據項一一對應的那個index。
QModelIndex index = model->index(row, column, ...);
Model為簡單的,單級的數據結構如list與tables提供了接口,它們如上面代碼所顯示的那樣,不再需要別的信息被提供。當我們在獲取一個model index時,我們需要提供另外的信息。

上圖代表一個基本的table model,它的每一項用一對行列數來定位。通過行列數,可以獲取代表一個數據項的model index .
QModelIndex indexA = model->index(0, 0, QModelIndex());
 QModelIndex indexB = model->index(1, 1, QModelIndex());
 QModelIndex indexC = model->index(2, 1, QModelIndex());
一個model的頂級項,由QModelIndex()取得,它們上式被用作父項。

父項
類似于表的接口在搭配使用table或list view時理想的,這種行列系統與view顯示的方式是確切匹配的。
然則,像tree views這種結構需要model提供更為靈活的接口來訪問數據項。每個數據項可能是別的項的
父項,上級的項可以獲取下級項的列表。
當獲取model中數據項的index時,我們必須指定關于數據項的父項的信息。在model外部,引用一個數據
項的唯一方法就是通過model index,因此需要在求取model index時指定父項的信息。
QModelIndex index = model->index(row, column, parent);

上圖中,A項和C項作為model中頂層的兄弟項:
 QModelIndex indexA = model->index(0, 0, QModelIndex());
 QModelIndex indexC = model->index(2, 1, QModelIndex());
A有許多孩子,它的一個孩子B用以下代碼獲?。?br>QModelIndex indexB = model->index(1, 0, indexA);

項角色
model中的項可以作為各種角色來使用,這允許為不同的環境提供不同的數據。舉例來說,Qt::DisplayRole被用于訪問一個字符串,它作為文本會在view中顯示。典型地,每個數據項都可以為許多不同的角色提供數據,標準的角色在Qt::ItemDataRole中定義。我們可以通過指定model index與角色來獲取我們需要的數據:
QVariant value = model->data(index, role);

角色指出了從model中引用哪種類型的數據。views可以用不同的形式顯示角色,因此為每個角色提供正確
的信息是非常重要的。通過為每個角色提供適當數據,model也為views和delegates提供了暗示,如何正確地
把這些數據項顯給用戶。不同的views可以自由地解析或忽略這些數據信息,對于特殊的場合,也可以定義
一些附加的角色。
概念總結:
1,Model indexes為views與delegages提供model中數據項定位的信息,它與底層的數據結構無關。
2,通過指定行,列數,父項的model index來引用數據項。
3,依照別的組件的要求,model indexes被model構建。
4,使用index()時,如果指定了有效的父項的model index,那么返回得到的model index對應于父項的某個孩子。
5,使用index()時,如果指定了無效的父項的model index,那么返回得到的model index對應于頂層項的某個孩子。
6, 角色對一個數據項包含的不同類型的數據給出了區分。

使用Model Indexes
QDirModel *model = new QDirModel;
     QModelIndex parentIndex = model->index(QDir::currentPath());
     int numRows = model->rowCount(parentIndex);
 for (int row = 0; row < numRows; ++row)
 {
         QModelIndex index = model->index(row, 0, parentIndex);
         tring text = model->data(index, Qt::DisplayRole).toString();
         // Display the text in a widget.

     }
以上的例子說明了從model中獲取數據的基本原則:
1,model的尺寸可以從rowCount()與columnCount()中得出。這些函數通常都需要一個表示父項的model index。
2,model indexes用來從model中訪問數據項,數據項用行,列,父項model index定位。
3, 為了訪問model頂層項,可以使用QModelIndex()指定。
4, 數據項為不同的角色提供不同的數據。為了獲取數據,除了model index之外,還要指定角色。

posted on 2007-06-17 14:31 清源游民 閱讀(7558) 評論(0)  編輯 收藏 引用 所屬分類: Qt
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(35)

隨筆分類(78)

隨筆檔案(74)

文章檔案(5)

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久噜噜噜精品国产亚洲综合| 亚洲欧美视频在线| 国产一区日韩欧美| 国产欧美一区二区三区在线看蜜臀| 欧美韩国在线| 欧美v日韩v国产v| 久久偷窥视频| 欧美阿v一级看视频| 亚洲福利一区| 妖精成人www高清在线观看| 亚洲精品在线观看视频| 999在线观看精品免费不卡网站| 欧美视频中文字幕在线| 国产精品久久久久91| 国产亚洲欧美色| 亚洲福利国产精品| 一区二区三区鲁丝不卡| 亚洲综合国产| 免费av成人在线| 亚洲国产综合91精品麻豆| 99精品视频免费观看视频| 亚洲人成绝费网站色www| a91a精品视频在线观看| 欧美在线观看网站| 免播放器亚洲一区| 国产精品国产福利国产秒拍| 激情久久久久久久| 亚洲精品在线观看免费| 羞羞漫画18久久大片| 欧美黄色免费网站| 亚洲欧美日韩精品综合在线观看 | 亚洲免费观看| 一区二区三区日韩欧美| 久久av老司机精品网站导航| 麻豆乱码国产一区二区三区| 亚洲国产精品999| 亚洲欧美一区二区三区久久| 免费人成精品欧美精品| 国产精品亚洲不卡a| 亚洲美女免费精品视频在线观看| 好看的日韩视频| 亚洲精品综合| 久久亚洲精品伦理| 亚洲影院高清在线| 欧美日韩成人网| 在线色欧美三级视频| 欧美在线观看一二区| 亚洲精选91| 毛片基地黄久久久久久天堂| 国产免费成人在线视频| 国产精品99久久久久久宅男| 亚洲成色www久久网站| 欧美自拍丝袜亚洲| 国产精品自在线| 亚洲尤物在线视频观看| 最新国产精品拍自在线播放| 久久狠狠久久综合桃花| 国产乱码精品一区二区三| 亚洲视频一区二区| 亚洲美女色禁图| 欧美日韩中文字幕| 一区二区三区波多野结衣在线观看| 99热免费精品| 欧美激情亚洲综合一区| 久久综合九色综合欧美狠狠| 狠狠色丁香婷婷综合| 午夜精品美女自拍福到在线| 99视频在线观看一区三区| 午夜精品成人在线视频| 国产精品亚洲欧美| 亚洲欧美日韩国产另类专区| 夜夜精品视频一区二区| 国产精品久久综合| 久久国产婷婷国产香蕉| 久久av最新网址| 亚洲国产一区二区三区a毛片| 亚洲精品偷拍| 亚洲人成网站在线观看播放| 亚洲日本va午夜在线影院| 欧美美女视频| 午夜精品久久久久久久男人的天堂 | 六月丁香综合| 久久精品国产精品亚洲综合 | 午夜一区二区三视频在线观看| 午夜日韩av| 国产欧美精品一区二区三区介绍| 国产午夜精品美女视频明星a级| 国产日韩高清一区二区三区在线| 红桃视频国产精品| 美女福利精品视频| 欧美大片在线观看一区| 亚洲视频在线观看| 亚洲综合色丁香婷婷六月图片| 久久久精品国产一区二区三区 | 先锋影音久久久| 欧美精品久久一区| 一区二区三区视频在线播放| 在线亚洲观看| 国产一区视频观看| 亚洲韩日在线| 国产欧美一区二区三区久久| 免费在线观看一区二区| 欧美日韩亚洲综合一区| 久久久精品免费视频| 欧美国产在线观看| 欧美一区国产在线| 欧美国产专区| 久久资源在线| 国产精品极品美女粉嫩高清在线| 亚洲美女淫视频| 欧美一级二区| 99视频有精品| 美女久久网站| 久久嫩草精品久久久久| 国产精品乱码一区二区三区| 欧美激情视频一区二区三区在线播放| 久久久99久久精品女同性| 中国女人久久久| 欧美xx69| 欧美电影免费观看高清完整版| 久久亚洲精品伦理| 欧美在线影院在线视频| 国产精品国产三级国产aⅴ入口| 亚洲美女av网站| 篠田优中文在线播放第一区| 亚洲性av在线| 欧美激情一区二区久久久| 麻豆久久精品| 黄色成人免费观看| 久久国产精品99国产精| 欧美在线日韩精品| 国产精品看片资源| 中文精品视频| 亚洲色诱最新| 欧美日韩精品一区视频| 亚洲国产美女| 国内精品美女av在线播放| 亚洲欧美日韩天堂一区二区| 亚洲美女色禁图| 久久精品视频99| 精品99一区二区| 久久久久9999亚洲精品| 欧美一区二区三区四区夜夜大片| 在线中文字幕日韩| 亚洲国产精品悠悠久久琪琪 | 在线亚洲欧美| 在线观看亚洲一区| 亚洲欧美成人一区二区在线电影| 欧美日精品一区视频| 免费亚洲网站| 国产综合香蕉五月婷在线| 久久夜色精品| 欧美大胆a视频| 国外视频精品毛片| 激情综合在线| 欧美激情亚洲综合一区| 日韩视频在线观看| 久久资源在线| 米奇777超碰欧美日韩亚洲| 国产视频欧美视频| av不卡在线看| 久久精品理论片| 国产一区二区三区免费观看| 午夜视频久久久久久| 欧美在线高清| 国产精品入口夜色视频大尺度 | 牛夜精品久久久久久久99黑人 | 亚洲精品久久嫩草网站秘色 | 欧美成人午夜剧场免费观看| 久久综合给合久久狠狠色| 国产精品私人影院| 午夜亚洲视频| 麻豆精品传媒视频| 最新日韩在线视频| 国产精品亚洲аv天堂网| 午夜久久福利| 牛夜精品久久久久久久99黑人| 欧美国产日韩在线观看| 亚洲国产精品激情在线观看| 亚洲日本欧美日韩高观看| 欧美日韩日本网| 亚洲性图久久| 久久亚洲精品欧美| 国产精品成人一区二区网站软件| 亚洲国产精品一区在线观看不卡| 欧美午夜电影在线| 亚洲一区激情| 久久天天躁狠狠躁夜夜爽蜜月| 欧美+日本+国产+在线a∨观看| 亚洲图片在线观看| 国产精品国产a| 欧美人交a欧美精品| 亚洲午夜精品久久| 每日更新成人在线视频| 亚洲经典一区| 国产精品一卡| 欧美金8天国| 亚洲一区二区伦理| 欧美成年人视频网站| 在线播放日韩专区|