成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

QT中樹控件QTreeView開發實例

移動開發
Qt 4推出了一組新的item view類,它們使用model/view結構來管理數據與表示層的關系。這種結構帶來的功能上的分離給了開發人員更大的彈性來定制數據項的表示,它也提供一個標準的model接口,使得更多的數據源可以被這些item view使用。

本文講解了QT中樹控件QTreeView開發實例,對于QTreeView沒有過多的講解,那么不說廢話了,看代碼是如何實現的吧。

方法一:使用QDirModel進行目錄的現實,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. //從缺省目錄創建數據  
  9. QTreeView *tree = new QTreeView(splitter);  
  10. tree->setModel(model);  
  11. tree->setRootIndex(model->index("c:\\"));  
  12. //配置一個view去顯示model中的數據,只需要簡單地調用setModel(),并把目錄model作為參數傳遞  
  13. //setRootIndex()告訴views顯示哪個目錄的信息,這需要提供一個model index,然后用這個  
  14. //model index去model中去獲取數據  
  15. //index()這個函數是QDirModel特有的,通過把一個目錄做為參數,得到了需要的model index  
  16. //其他的代碼只是窗口show出來,進入程序的事件循環就好了  
  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();  

顯示結果如下所示:

QT樹控件 QTreeView

方法二:自行設置樹型結構。

"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 服務管理"));  
  13. view.show();  
  14. return app.exec();  

顯示:

QT樹控件 QTreeView

以上就是TreeView的兩種Model了。

小結:本文簡單的介紹了QT樹控件QTreeView ,通過一個簡單的實例來實現QTreeView 的價值。Qt 4推出了一組新的item view類,它們使用model/view結構來管理數據與表示層的關系。這種結構帶來的功能上的分離給了開發人員更大的彈性來定制數據項的表示,它也提供一個標準的model接口,使得更多的數據源可以被這些item view使用。

【編輯推薦】

QT的信號與槽機制

解析 QT 靜態庫和動態庫

利用Qt Designer開發Qt界面

深度解析 QT 編譯安裝方法

深度解析嵌入式QT開發環境搭建

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-13 16:51:19

Qt Socket

2014-08-26 11:46:46

QtAndroid實例教程

2011-06-20 16:03:03

Qt 控件 鼠標

2011-06-30 16:38:07

Qt QTableWidg

2011-06-30 17:31:32

Qt 多線程 信號

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-14 16:45:57

Qt 圖標

2011-06-30 16:24:38

Qt TableWidge

2011-06-24 14:34:17

Qt 小票 打印

2011-06-27 16:07:49

Qt Designer

2011-06-21 09:33:49

Qt 啟動 界面

2011-07-01 18:35:17

QT 控制臺

2011-07-05 14:23:07

QT MySQL 驅動

2009-07-20 18:02:48

GridView控件ASP.NET 2.0

2011-06-13 14:29:40

Qt Designer
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产视频 | 亚洲精品国产一区 | 婷婷久久一区 | 成人av网站在线观看 | 国产精品一区二 | 国产成人一区二区 | 国产乱码精品一品二品 | 狠狠狠色丁香婷婷综合久久五月 | 成人久久18免费网站 | 亚洲福利av| 精品视频一区在线 | 精品欧美一区二区在线观看视频 | 国产精品3区 | 欧美性乱 | a在线视频观看 | 精品久久国产 | 久久国产成人精品国产成人亚洲 | 欧美日一区 | 凹凸日日摸日日碰夜夜 | 欧美日韩精品久久久免费观看 | 精品国产精品一区二区夜夜嗨 | 99精品久久| 五月婷婷在线视频 | 国产一区三区视频 | 91精品久久久久久久久中文字幕 | 亚洲欧洲成人 | 一区二区在线不卡 | 国产高清视频在线观看 | 午夜一级黄色片 | 久久精品中文 | 久久久久久99 | 亚洲一区二区免费 | 日韩亚洲视频 | 2021狠狠天天天 | 久久视频一区 | 日韩av视屏 | 亚洲成人久久久 | 九九亚洲| 欧美福利网站 | 欧美区日韩区 | 国产高清免费视频 |