Look at the example below and you'll see.
Method One: Use Qdirmodel to carry on the reality of the catalogue, Qdirmodel is a model that the QT Secondary school provides for the file directory tree type display. The specific use is as follows:
#include <QtGui>
int main (int argc, char *argv[])
{
qapplication app (argc, argv);
Qsplitter *splitter = new Qsplitter;
Qdirmodel *model = new Qdirmodel;
Create data from the default directory
Qtreeview *tree = new Qtreeview (splitter);
Tree->setmodel (model);
Tree->setrootindex (Model->index ("c:\\"));
Configure a view to display the data in model, simply call Setmodel (), and pass the catalog model as a parameter
//setrootindex () tell the views which directory information to display, which needs to provide a model Index, and then use this
//model index to go to model to get Data
//index () This function is Qdirmodel specific, by using a directory as a parameter, get the required model index
// The other code is just a window show, the event loop into the program is good
qtextcodec::setcodecfortr (Qtextcodec::codecforname ("GBK")); Qtextcodec *codec = Qtextcodec::codecforlocale ();
QString a = codec->tounicode ("Table of Contents");
Splitter->setwindowtitle (a);
Splitter->show ();
return app.exec ();
}
The results shown are as follows:
Method Two: Set the tree structure by oneself.
"Treeview.h" file
#include <QtGui>
class treeview:p ublic qtreeview
{public
:
TreeView ();
void Iterateoveritems ();
Qlist<qstandarditem*> Returntheitems ();
void Mousedoubleclickevent (Qmouseevent *event);
Private:
Qstandarditemmodel *model;
"Treeview.cpp" file
#include "treeview.h" Treeview::treeview (): Qtreeview () {QTEXTCODEC::SETCODECFORTR (Qtextcodec::codecforname ("GBK")
);
Model = new Qstandarditemmodel (4,2);
Model->setheaderdata (0, Qt::horizontal, tr ("Service"));
Model->setheaderdata (1, qt::horizontal, tr ("Details"));
Qstandarditem *item1 = new Qstandarditem ("Avahi-daemon");
Item1->seticon (Qicon ("gparted.png"));
Qstandarditem *item2 = new Qstandarditem ("Bluetooth");
Item2->seticon (Qicon ("gparted.png"));
Qstandarditem *item3 = new Qstandarditem ("Crond");
Item3->seticon (Qicon ("gparted.png"));
Qstandarditem *item4 = new Qstandarditem ("cups");
Item4->seticon (Qicon ("gparted.png"));
Model->setitem (0, 0, item1);
Model->setitem (1, 0, item2);
Model->setitem (2, 0, item3);
Model->setitem (3, 0, ITEM4);
Qstandarditem *ITEM5 = new Qstandarditem ("fifth");
Item4->appendrow (ITEM5);
Qmodelindex parent; for (int i = 0; i < 4; ++i) {parent = Model->index (0, 0, parent); Model->insertrows (0, 1, parent); Model-> insertcolumns (0, 1, parent);
Qmodelindex index = model->index (0, 0, parent);
Model->setdata (index, i);
This->setmodel (model); } qlist<qstandarditem*> Treeview::returntheitems () {return Model->finditems ("*", Qt::matchwildcard |
qt::matchrecursive); } void Treeview::iterateoveritems () {qlist<qstandarditem*> list = Returntheitems (); foreach (qstandarditem* Item,
List) {Qdebug () << item->text ();}} void Treeview::mousedoubleclickevent (Qmouseevent *event) {if (Event->button () = = Qt::leftbutton) {QModelIndex
index0 = Currentindex ();
Qdebug () << index0.data (). toString (); }
}
"Main.cpp" file
#include <QtGui/QApplication>
#include "treeview.h"
int main (int argc, char *argv[])
{
Qapplication app (argc, argv);
TreeView view;
View.setedittriggers (qabstractitemview::noedittriggers);
View.header ()->setresizemode (qheaderview::resizetocontents);
View.resize (300,280);
View.iterateoveritems ();
View.setwindowtitle (QOBJECT::TR ("Linux service Management");
View.show ();
return app.exec ();
}
Show:
That's two of the TreeView's model.