首先我们了解一下 QTreeWidget的属性
1.QTreeWidget 控件的创建
QTreeWidget tw;//单独的树
QTreeWidget tw(&w);//在w界面里的树
2.往tw中添加子节点
创建一个新结点,设置结点中包含的数据(strings),将该结点添加到指定的parent树形结构中
QTreewidgetItem(QTreewidget *parent,const QstringList sstrings,int type = Type)
创建一个新结点,将其插入到parent树形结构中 preceding 结点之后的位置QTreewidgetItem(QTreewidget *parent,QTreewidgetitem *preceding,int type =Type)
创建一个新结点,将其添加到指定parent 结点中,作为 parent 结点的子结点QTreewidgetItem(QTreewidgetItem *parent, int type = Type)
创建一个新结点,指定结点中包含的文本内容(strings),将其添加到指定parent结点中,作为parent的子结点
TreewidgetItem(QTreewidgetItem *parent,const QstringList&strings, int type = Type)
创建要给新结点,将其插入到 parent结点中 preceding结点之后的位置。QTreewidgetitem(QTreewidgetItem*parent,QTreewidgetItem*preceding, int type = Type)
3.QTreewidgetitem提供了很多成员方法
成员方法 | 功能 |
void QTreeWidgetltem:addChild(QTreeWidgetltem *child) | 为当前结点添加子结点。 |
void QTreeWidgetltem:addChildren(constQList<QTreeWidgetltem *> &children) | 一次性为当前结点添加多个子结点。 |
QTreeWidgetltem *QTreeWidgetltem:child(int index) const | 获得当前结点的第index个子结点。 |
QTreeWidgetltem *QTreeWidgetltem:parent() const | 获得当前结点的父结点。 |
int QTreeWidgetltem::childCount() const | 获得当前结点拥有的子结点数。 |
void QTreeWidgetltem:setCheckState(int column,Qt::CheckState state) | 设置当前结点第column列的复选框状态。 |
void QTreeWidgetltem::setlcon(int column,const Qlcon &icon) | 设置当前结点第column列的icon图标。 |
void QTreeWidgetltem::setText(int column, const QString&text) | 设置当前结点第column列的文本。 |
4.QTreeWidget 的实际应用
成员方法 | 功能 |
void setColumnCount(int columns) | 设置每个结点的列数。 |
void setHeaderHidden(bool hide) | 设置控件的表头是否隐藏。 |
void QTreeWVidget::addTopLevelltem(QTreeWidgetltem *item) | 在树形控件中添加顶层结点。 |
void QTreeWidget::setHeaderLabels(const QStringList &labels) | 自定义控件中所有列的表头的文本内容。 |
void QTreeWidget::setltemWidget(QTreeWidgetltem *item, intcolumn, QWidget *widget) | 在item结点中第column列的位置添加一个widget控件。 |
void QTreeWidget::removeltemWidget(QTreeWidgetltem *item,intcoulmn) | 移除 item结点第 column列处的控件 |
void QWidget::resize(int w, int h) | 设置整个控件的尺寸。 |
我们创建了一个这样的树行控件
点击文字 他会自动展开他的子节点
完整代码如下
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include <QApplication>
#include <QStringList>
#include <QListWidget>
#include <QTableWidget>
#include <QTreeWidget>
#include <QTreeWidgetItem>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
QTreeWidget tw(&w);
tw.move(100,50);
tw.resize(300,500);
QTreeWidgetItem *pTop=new QTreeWidgetItem(&tw);
pTop->setText(0,"网址");
tw.setColumnCount(2);
pTop->addChild(new QTreeWidgetItem(pTop,QStringList()<<"百度"<<"www.baidu.com") );
QTreeWidgetItem *pQQ=new QTreeWidgetItem(pTop,QStringList()<<"腾讯"<<"www.qq.com" );
new QTreeWidgetItem(pQQ,QStringList()<<"马化腾");
QObject::connect(&tw,&QTreeWidget::itemClicked,&tw,&QTreeWidget::expandItem);
w.show();
return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}