自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

QT中樹控件QTreeView開發(fā)實(shí)例

移動(dòng)開發(fā)
Qt 4推出了一組新的item view類,它們使用model/view結(jié)構(gòu)來管理數(shù)據(jù)與表示層的關(guān)系。這種結(jié)構(gòu)帶來的功能上的分離給了開發(fā)人員更大的彈性來定制數(shù)據(jù)項(xiàng)的表示,它也提供一個(gè)標(biāo)準(zhǔn)的model接口,使得更多的數(shù)據(jù)源可以被這些item view使用。

本文講解了QT中樹控件QTreeView開發(fā)實(shí)例,對(duì)于QTreeView沒有過多的講解,那么不說廢話了,看代碼是如何實(shí)現(xiàn)的吧。

方法一:使用QDirModel進(jìn)行目錄的現(xiàn)實(shí),QDirModel是QT中專為文件目錄樹型顯示所提供的一種model。 具體使用如下:

  1. #include <QtGui> 
  2.  
  3. int main(int argc, char *argv[])  
  4. {   
  5. QApplication app(argc, argv);  
  6. QSplitter *splitter = new QSplitter;  
  7.         QDirModel *model = new QDirModel;  
  8. //從缺省目錄創(chuàng)建數(shù)據(jù)  
  9. QTreeView *tree = new QTreeView(splitter);  
  10. tree->setModel(model);  
  11. tree->setRootIndex(model->index("c:\\"));  
  12. //配置一個(gè)view去顯示model中的數(shù)據(jù),只需要簡(jiǎn)單地調(diào)用setModel(),并把目錄model作為參數(shù)傳遞  
  13. //setRootIndex()告訴views顯示哪個(gè)目錄的信息,這需要提供一個(gè)model index,然后用這個(gè)  
  14. //model index去model中去獲取數(shù)據(jù)  
  15. //index()這個(gè)函數(shù)是QDirModel特有的,通過把一個(gè)目錄做為參數(shù),得到了需要的model index  
  16. //其他的代碼只是窗口show出來,進(jìn)入程序的事件循環(huán)就好了  
  17. QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));   //中文顯示  
  18.         QTextCodec *codec = QTextCodec::codecForLocale();  
  19. QString a = codec->toUnicode("目錄");  
  20. splitter->setWindowTitle(a);  
  21. splitter->show();  
  22. return app.exec();  

顯示結(jié)果如下所示:

QT樹控件 QTreeView

方法二:自行設(shè)置樹型結(jié)構(gòu)。

"Treeview.h"文件

 

  1. #include <QtGui> 
  2. class TreeView :public QTreeView  
  3. {  
  4. public:  
  5. TreeView();  
  6. void iterateOverItems();  
  7. QList<QStandardItem*> returnTheItems();  
  8. void mouseDoubleClickEvent(QMouseEvent *event);  
  9. private:  
  10. QStandardItemModel *model;  
  11. }; 

"Treeview.cpp"文件

  1. #include "treeview.h"  
  2. TreeView::TreeView() : QTreeView()  
  3. {        
  4. QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  
  5. model = new QStandardItemModel(4,2);  
  6. model->setHeaderData(0, Qt::Horizontal, tr("Service"));  
  7. model->setHeaderData(1, Qt::Horizontal, tr("Details"));  
  8. QStandardItem *item1 = new QStandardItem("avahi-daemon");  
  9. item1->setIcon(QIcon("gparted.png"));  
  10. QStandardItem *item2 = new QStandardItem("bluetooth");  
  11. item2->setIcon(QIcon("gparted.png"));  
  12. QStandardItem *item3 = new QStandardItem("crond");  
  13.     item3->setIcon(QIcon("gparted.png"));   
  14. QStandardItem *item4 = new QStandardItem("cups");  
  15. item4->setIcon(QIcon("gparted.png"));   
  16. model->setItem(0, 0, item1);  
  17. model->setItem(1, 0, item2);  
  18. model->setItem(2, 0, item3);  
  19. model->setItem(3, 0, item4);  
  20. QStandardItem *item5 = new QStandardItem("fifth");  
  21. item4->appendRow(item5);  
  22. QModelIndex parent;  
  23. for (int i = 0; i < 4; ++i) {  
  24.    parent = model->index(0, 0, parent);  
  25.    model->insertRows(0, 1, parent);  
  26.    model->insertColumns(0, 1, parent);  
  27.    QModelIndex index = model->index(0, 0, parent);  
  28.    model->setData(index, i);  
  29. }  
  30. this->setModel(model);  
  31. }  
  32. QList<QStandardItem*> TreeView::returnTheItems()  
  33. {  
  34. return model->findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);  
  35. }  
  36. void TreeView::iterateOverItems()  
  37. {  
  38. QList<QStandardItem*> list = returnTheItems();  
  39.  
  40. foreach (QStandardItem* item, list) {  
  41.    qDebug() << item->text();  
  42. }  
  43. }  
  44. void TreeView::mouseDoubleClickEvent(QMouseEvent *event)  
  45. {  
  46. if (event->button() == Qt::LeftButton) {  
  47.    QModelIndex index0 = currentIndex();  
  48.    qDebug() << index0.data().toString();  
  49. }  

"Main.cpp"文件

  1. #include <QtGui/QApplication> 
  2. #include "treeview.h"  
  3.  
  4. int main(int argc, char *argv[])  
  5. {  
  6. QApplication app(argc, argv);  
  7. TreeView view;  
  8. view.setEditTriggers(QAbstractItemView::NoEditTriggers);   
  9. view.header()->setResizeMode(QHeaderView::ResizeToContents);  
  10. view.resize(300,280);  
  11.     view.iterateOverItems();  
  12. view.setWindowTitle(QObject::tr("Linux 服務(wù)管理"));  
  13. view.show();  
  14. return app.exec();  

顯示:

QT樹控件 QTreeView

以上就是TreeView的兩種Model了。

小結(jié):本文簡(jiǎn)單的介紹了QT樹控件QTreeView ,通過一個(gè)簡(jiǎn)單的實(shí)例來實(shí)現(xiàn)QTreeView 的價(jià)值。Qt 4推出了一組新的item view類,它們使用model/view結(jié)構(gòu)來管理數(shù)據(jù)與表示層的關(guān)系。這種結(jié)構(gòu)帶來的功能上的分離給了開發(fā)人員更大的彈性來定制數(shù)據(jù)項(xiàng)的表示,它也提供一個(gè)標(biāo)準(zhǔn)的model接口,使得更多的數(shù)據(jù)源可以被這些item view使用。

【編輯推薦】

QT的信號(hào)與槽機(jī)制

解析 QT 靜態(tài)庫和動(dòng)態(tài)庫

利用Qt Designer開發(fā)Qt界面

深度解析 QT 編譯安裝方法

深度解析嵌入式QT開發(fā)環(huán)境搭建

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-13 16:51:19

Qt Socket

2011-06-20 16:03:03

Qt 控件 鼠標(biāo)

2014-08-26 11:46:46

QtAndroid實(shí)例教程

2011-06-30 17:31:32

Qt 多線程 信號(hào)

2011-06-30 16:38:07

Qt QTableWidg

2011-06-14 11:48:38

Webkit QT

2009-09-01 17:08:14

C#畫線控件

2011-04-19 10:33:16

ASP.NET自定義控

2011-06-30 17:01:43

Qt Creator 菜單欄

2011-07-05 14:46:34

2011-06-13 13:06:48

Gtk Qt

2011-06-27 16:07:49

Qt Designer

2011-06-21 09:33:49

Qt 啟動(dòng) 界面

2011-06-14 16:45:57

Qt 圖標(biāo)

2011-06-24 14:34:17

Qt 小票 打印

2011-06-30 16:24:38

Qt TableWidge

2011-07-05 14:23:07

QT MySQL 驅(qū)動(dòng)

2009-07-20 18:02:48

GridView控件ASP.NET 2.0

2011-07-01 18:35:17

QT 控制臺(tái)

2011-06-13 14:29:40

Qt Designer
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)