Some time ago, my notebook broke down and I haven't updated my blog. Now I have finished it. Let's continue with the Qt learning path series! Next we will talk about another item view class, QTreeWidget. As the name suggests, this class is used to display the tree structure. Similar to the preceding QListWidget, this class must be used together with another helper class QTreeWidgetItem. However, since it is a provided encapsulation class, even a tree that looks very complex, it is relatively simple to use this class. When complicated QTreeView features are not required, we can directly use QTreeWidget instead. Next let's look at the code. Treewidget. h650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> # ifndef TREEWIDGET_H
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> # define TREEWIDGET_H
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> # include <QtGui>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> class TreeWidget: public QWidget
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> {
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> public:
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> TreeWidget ();
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> private:
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QTreeWidget * tree;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> };
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align = "top" src = "http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif"/> # endif // TREEWIDGET_H treewidget. cpp650) this. width = 650; "onclick = 'window. open ("http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> # include" treewidget. h"
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> TreeWidget: TreeWidget ()
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> {
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree = new QTreeWidget (this );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'ign =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree-> setColumnCount (1 );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align = "top" src = "http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif"/> QTreeWidgetItem * root = new QTreeWidgetItem (tree, QStringList (QString ("Root ")));
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align = "top" src = "http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif"/> QTreeWidgetItem * leaf = new QTreeWidgetItem (root, QStringList (QString ("Leaf 1 ")));
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> root-> addChild (leaf );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align = "top" src = "http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif"/> QTreeWidgetItem * leaf2 = new QTreeWidgetItem (root, QStringList (QString ("Leaf 1 ")));
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> leaf2-> setCheckState (0, Qt: Checked );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> root-> addChild (leaf2 );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QList <QTreeWidgetItem *> rootList;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> rootList <root;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree-> insertTopLevelItems (0, rootList );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>}
First, we create a QTreeWidget instance in the constructor. Then we call the setColumnCount () function to set the number of columns. Let's look at the effect of this function later. Then we will add QTreeWidgetItem to QTreeWidget. QTreeWidgetItem has nine overloaded constructors. Here we will only look at one of them. For the rest, please refer to the API documentation on your own. The constructor signature is as follows: 650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php?refimg= "+ This. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QTreeWidgetItem: QTreeWidgetItem (QTreeWidget * parent, const QStringList & strings, int type = Type); here there are three parameters, the first parameter is used to specify the tree to which the item belongs. The second parameter is used to specify the text displayed by the item. The third parameter is used to specify the type of the item. There are two feasible values for Type: QTreeWidgetItem: Type and QTreeWidgetItem: UserType. Since we have not defined the user Type, we only need to use its default value. Here you may wonder why the second parameter is of the QStringList type, rather than of the QString type? Let's ignore it and continue the following code. A QTreeWidgetItem is created later. Note that the first parameter of QTreeWidget is of the QTreeWidgetItem type instead of QTreeWidget. In this case, the parent node of QTreeWidgetItem is set to the root node defined previously. Then we use the setCheckState () function to make it selectable. Finally, we use the addChild () function to add it. In the last step, we create a QList type, add the preceding root, and then insert it to top items. It can be imagined that this tree component can be composed of multiple roots. Strictly speaking, this is no longer a tree, but it should be called a tree). Therefore, we will upload a list. Let's compile and run our code! 650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php?refimg= "+ This. src) 'border =" 0 "alt =" "src =" http://img1.51cto.com/attachment/201001/201001091263048083312.png "/> It looks basically the same as we thought, but how can there be a 1 on the head of this tree? Do you still remember the function we jumped over? Next let's modify the code to see: 650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php?refimg= "+ This. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> # Include" listwidget. h"
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> TreeWidget: TreeWidget ()
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> {
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree = new QTreeWidget (this );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'ign =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree-> setColumnCount (2 );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QStringList headers;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> headers <" Name "<" Number ";
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree-> setHeaderLabels (headers );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QStringList rootTextList;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> rootTextList <" Root "<" 0 ";
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QTreeWidgetItem * root = new QTreeWidgetItem (tree, rootTextList );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QStringList leafTextList;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> leafTextList <" Leaf 1 "<" 1 ";
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QTreeWidgetItem * leaf = new QTreeWidgetItem (root, leafTextList );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> root-> addChild (leaf );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QStringList leaf2TextList;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> leaf2TextList <" Leaf 2 "<" 2 ";
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QTreeWidgetItem * leaf2 = new QTreeWidgetItem (root, leaf2TextList );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> leaf2-> setCheckState (0, Qt: Checked );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> root-> addChild (leaf2 );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> QList <QTreeWidgetItem *> rootList;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> rootList <root;
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/> tree-> insertTopLevelItems (0, rootList );
650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'align =" top "src =" http://www.bkjia.com/uploads/allimg/131228/1QKTc2-0.gif "/>} We set columnCount to 2, and then the passed QStringList corresponds to 2 elements. Run it again: 650) this. width = 650; "onclick = 'window. open (" http://blog.51cto.com/viewpic.php? Refimg = "+ this. src) 'border =" 0 "alt =" "src =" http://img1.51cto.com/attachment/201001/201001091263048547437.png "/> the original columnCount is used to display the tree in the list! In this way, you can easily combine the tree and list to implement a window similar to Windows Resource Manager. Of course, if you do not need to display this header, you can call the setHeaderHidden () function to hide this function.
This article is from the "bean space" blog, please be sure to keep this source http://devbean.blog.51cto.com/448512/262296