日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT中树控件QTreeView开发实例

發布時間:2025/7/14 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT中树控件QTreeView开发实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://mobile.51cto.com/symbian-268700.htm

?

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

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

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

顯示結果如下所示:

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

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

"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(); 15 }

顯示:

以上就是TreeView的兩種Model了。

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

?

?

轉載于:https://www.cnblogs.com/liuyunfeifei/archive/2012/11/22/2782085.html

總結

以上是生活随笔為你收集整理的QT中树控件QTreeView开发实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。