QT QTreeWidget 控件 学习笔记

本文介绍了如何使用Qt库中的QTreeWidget组件来创建和操作树形控件。通过示例代码展示了如何创建、添加子节点、设置节点属性以及响应点击事件,用于展示和管理层次结构数据。同时,详细列出了一系列用于添加、删除和修改节点内容的方法,以及设置表头、添加自定义控件等实际应用。
摘要由CSDN通过智能技术生成

首先我们了解一下 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;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值