QT QTreeView\QTreeWidget控件 使用详解

这篇具有很好参考价值的文章主要介绍了QT QTreeView\QTreeWidget控件 使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

         本文详细的介绍了QTreeView、QTreeWidget控件的各种操作,例如:新建界面、QTreeWidget、QTreeView、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、默认选中、.h源文件、cpp源文件、其它文章等等操作。

        实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。布局管理器可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等;当用户调整窗口大小时,位于布局管理器内的控件也会随之调整大小,从而保持整个界面的美观。

        本系列QT全面详解文章目前共有二十八篇高质量内容,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

qt treeview,QT控件使用详解,qt,开发语言

 本文作者原创,转载请附上文章出处与本文链接。

QT QTreeView\QTreeWidget控件 使用详解目录

1 新建界面

2  QTreeWidget

2.1 控件布局

2.2 设置列

2.3 设置宽高

2.4 设置列表头

2.5 设置复选框

2.6 添加树

2.6.1 添加顶层项目

2.6.2 插入顶层项目

2.6.3 添加子项

2.7 删除树

2.7.1 删除子项目

2.7.2 删除顶级条目

2.8 查询树

2.8.1 查询对应条目

2.8.2 查询对应序号

2.9 树条目操作

2.9.1 当前选中行列

2.9.2 设置条目选中

2.9.3 设置选中行

2.9.4 设置选中列

2.9.5 当前选中行 上一个选中行

2.10 树排序

2.10.1 设置自动排序

2.10.2 升序降序

2.11 树查找

2.12 清空树

2.13 折叠树

2.14 展开树

2.15 滚动指定条目

2.16 树单击信号

2.17 树双击信号

2.18 树展开信号

2.19 树折叠信号

2.20 列数据变化信号

3 QTreeView

3.1 控件布局

3.2 添加节点

3.3 设置图标

3.4 设置checkBox

3.5 默认选中

3.6 单击信号

3.7 双击信号


1 新建界面

qt treeview,QT控件使用详解,qt,开发语言

2  QTreeWidget

qt treeview,QT控件使用详解,qt,开发语言

2.1 控件布局

    QStringList topTitle;

    QTreeWidgetItem* treeWidgetItem_1;
    QTreeWidgetItem* treeWidgetItem_2;
    QTreeWidgetItem* treeWidgetItem_3;

    QTreeWidgetItem* treeItem_1;
    QTreeWidgetItem* treeItem_2;
    QTreeWidgetItem* treeItem_3;

    QStringList sTreeList_1,sTreeList_2,sTreeList_3;
    QStringList sTreeItemList_1,sTreeItemList_2,sTreeItemList_3;


    //创建项目
    treeWidgetItem_1 = new QTreeWidgetItem(sTreeList_1);
    treeWidgetItem_2 = new QTreeWidgetItem(sTreeList_2);
    treeWidgetItem_3 = new QTreeWidgetItem(sTreeList_3);

    treeItem_1=new QTreeWidgetItem(sTreeItemList_1);
    treeItem_2=new QTreeWidgetItem(sTreeItemList_2);
    treeItem_3=new QTreeWidgetItem(sTreeItemList_3);
    
    sTreeList_1 << "顶级条目0-第1列" << "顶级条目0-第2列" << "顶级条目0-第3列" << "顶级条目0-第4列" << "顶级条目0-第5列";
    sTreeList_2 << "顶级条目1-第1列" << "顶级条目1-第2列" << "顶级条目1-第3列" << "顶级条目1-第4列" << "顶级条目1-第5列";
    sTreeList_3 << "顶级条目2-第1列" << "顶级条目2-第2列" << "顶级条目2-第3列" << "顶级条目2-第4列" << "顶级条目2-第5列";

    sTreeItemList_1 << "子条目0-第1列" << "子条目0-第2列" << "子条目0-第3列" << "子条目0-第4列" << "子条目0-第5列";
    sTreeItemList_3 << "子条目1-第1列" << "子条目1-第2列" << "子条目1-第3列" << "子条目1-第4列" << "子条目1-第5列";
    sTreeItemList_2 << "子条目2-第1列" << "子条目2-第2列" << "子条目2-第3列" << "子条目2-第4列" << "子条目2-第5列";

2.2 设置列

    //设置列数
    ui->treeWidget->setColumnCount(3);

    //获取列
    ui->treeWidget->columnCount();

2.3 设置宽高

    //设置宽高
    //ui->treeWidget->resize(600,300);

2.4 设置列表头

topTitle << "0" << "1" << "2" << "3" << "4";
ui->treeWidget->setHeaderLabels(topTitle);

2.5 设置复选框

    //设置复选框     参数1 复选框的位置 列序号    Qt::Unchecked   没选中 Qt::Checked    选中   Qt::PartiallyChecked   部分选中
    treeWidgetItem_2->setCheckState(0,Qt::PartiallyChecked);

2.6 添加树

2.6.1 添加顶层项目

    //添加一个顶层项目
    ui->treeWidget->addTopLevelItem(treeWidgetItem_1);
    ui->treeWidget->addTopLevelItem(treeWidgetItem_2);

2.6.2 插入顶层项目

    //插入顶层项目
    ui->treeWidget->insertTopLevelItem(0,treeWidgetItem_3);

2.6.3 添加子项

    //给项目添加子项
    treeWidgetItem_1->addChild(treeItem_1);
    treeWidgetItem_1->addChild(treeItem_2);
    treeWidgetItem_1->addChild(treeItem_3);

2.6.4 其它添加函数

        例如 获取顶层项目总数

qDebug() << "顶层总数:" << ui->treeWidget->topLevelItemCount();

    //    树形控件顶级条目的操作比较类似 QListWidget 的列表条目操作函数。新建条目之后,可以用如下函数把条目添加到树形控件的顶级条目列表末尾:
    //    void QTreeWidget::​addTopLevelItem(QTreeWidgetItem * item) //添加一个顶级条目到末尾
    //    void QTreeWidget::​addTopLevelItems(const QList<QTreeWidgetItem *> & items) //添加多个顶级条目到末尾
    //    如果希望将条目插入到指定顶级条目列表的 index 序号位置,使用如下函数:
    //    void QTreeWidget::​insertTopLevelItem(int index, QTreeWidgetItem * item)
    //    void QTreeWidget::​insertTopLevelItems(int index, const QList<QTreeWidgetItem *> & items)
    //    树形控件所有的顶级条目父节点指针都为 NULL (父节点是指树形层次中的节点关系,而条目的父控件依然是树形控件本身)。
    //    添加了顶级条目之后,可以对顶级条目进行计数:
    //    int QTreeWidget::​topLevelItemCount() const

2.7 删除树

2.7.1 删除子项目

    //删除子项目
    //treeWidgetItem_1->takeChild(2);

2.7.2 删除顶级条目

    //删除顶级条目
    //ui->treeWidget->takeTopLevelItem(2);

2.8 查询树

2.8.1 查询对应条目

    //查询控件对应条目
    qDebug() << ui->treeWidget->topLevelItem(1);

2.8.2 查询对应序号

    //查询控件顶级序号
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_1);
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_2);
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_3);

2.9 树条目操作

2.9.1 当前选中行列

    qDebug() << "当前选中行: " << ui->treeWidget->currentItem();
    qDebug() << "当前选中列: " << ui->treeWidget->currentColumn();

2.9.2 设置条目选中

//    void QTreeWidget::​setCurrentItem(QTreeWidgetItem * item)
//    void QTreeWidget::​setCurrentItem(QTreeWidgetItem * item, int column)

2.9.3 设置选中行

    //设置选中行
    //ui->treeWidget->setCurrentItem(treeWidgetItem_1);

2.9.4 设置选中列

    //设置选中某行某列
    ui->treeWidget->setCurrentItem(treeWidgetItem_1,2);

2.9.5 当前选中行 上一个选中行

    //当前选中行 上一个选中行
    //ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);

2.10 树排序

2.10.1 设置自动排序

    //ui->treeWidget->isSortingEnabled();
    //ui->treeWidget->setSortingEnabled(true);

2.10.2 升序降序

    //ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder);       //升序
    //ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder);      //降序

2.11 树查找

    QString text = "顶级条目2-第2列";
    Qt::MatchFlags flags;
    //ui->treeWidget->findItems(text, flags, 0);
    bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
    qDebug() << "查找: " << isEmpty;

2.12 清空树

//清空控件
void MainWindow::on_pushButton_2_clicked()
{
    ui->treeWidget->clear();
}

2.13 折叠树

//折叠控件
void MainWindow::on_pushButton_3_clicked()
{
    ui->treeWidget->collapseItem(treeWidgetItem_1);
}

2.14 展开树

//展开控件
void MainWindow::on_pushButton_4_clicked()
{
    ui->treeWidget->expandItem(treeWidgetItem_1);
}

2.15 滚动指定条目

//滚动到指定条目
void MainWindow::on_pushButton_5_clicked()
{
    //void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)
}

2.16 树单击信号

void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    qDebug() << "单击信号: " << item << "column: " << column;
}

2.17 树双击信号

void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
    qDebug() << "双击信号: " << item << "column: " << column;
}

2.18 树展开信号

void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item)
{
    qDebug() << "展开控件:" << item;
}

2.19 树折叠信号

void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item)
{
    qDebug() << "折叠信号: " << item;
}

2.20 列数据变化信号

void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column)
{
    qDebug() << "列数据变化: " << item;
}

3 QTreeView

qt treeview,QT控件使用详解,qt,开发语言

3.1 控件布局

    QStandardItemModel *standardModel;
    QStandardItem *standardItem;

    //设置表头
    standardModel = new QStandardItemModel(this);
    //设置表头隐藏
    //ui->treeView->setHeaderHidden(true);
    //设置表头
    standardModel->setHorizontalHeaderLabels(QStringList()<<"0"<<"1"<<"2");
    //设置model
    ui->treeView->setModel(standardModel);
    //设置展开
    ui->treeView->expandAll();

3.2 添加节点

    //添加节点
    standardItem = new QStandardItem("顶级条目-0");

        standardModel->setItem(0,0,standardItem);
        QStandardItem *item00 = new QStandardItem("子条目0");
        QStandardItem *item10 = new QStandardItem("子条目1");
        QStandardItem *item20 = new QStandardItem("子条目2");

        QStandardItem *item01 = new QStandardItem("0-0");
        QStandardItem *item11 = new QStandardItem("0-1");
        QStandardItem *item21 = new QStandardItem("0-2");

        QStandardItem *item02 = new QStandardItem("0-0-0");
        QStandardItem *item12 = new QStandardItem("0-1-1");
        QStandardItem *item22 = new QStandardItem("0-2-2");

        standardModel->item(0,0)->setChild(0,0,item00);
        standardModel->item(0,0)->setChild(1,0,item10);
        standardModel->item(0,0)->setChild(2,0,item20);
        standardModel->item(0,0)->setChild(0,1,item01);
        standardModel->item(0,0)->setChild(1,1,item11);
        standardModel->item(0,0)->setChild(2,1,item21);
        standardModel->item(0,0)->setChild(0,2,item02);
        standardModel->item(0,0)->setChild(1,2,item12);
        standardModel->item(0,0)->setChild(2,2,item22);


        QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"顶级条目-1");
        standardModel->setItem(1,0,item2);

        QStandardItem *item200 = new QStandardItem("子条目0");
        QStandardItem *item210 = new QStandardItem("子条目1");
        QStandardItem *item220 = new QStandardItem("子条目2");

        QStandardItem *item201 = new QStandardItem("1-0");
        QStandardItem *item211 = new QStandardItem("1-1");
        QStandardItem *item221 = new QStandardItem("1-2");

        QStandardItem *item202 = new QStandardItem("1-0-0");
        QStandardItem *item212 = new QStandardItem("1-1-1");
        QStandardItem *item222 = new QStandardItem("1-2-2");

        standardModel->item(1,0)->setChild(0,0,item200);
        standardModel->item(1,0)->setChild(1,0,item210);
        standardModel->item(1,0)->setChild(2,0,item220);
        standardModel->item(1,0)->setChild(0,1,item201);
        standardModel->item(1,0)->setChild(1,1,item211);
        standardModel->item(1,0)->setChild(2,1,item221);
        standardModel->item(1,0)->setChild(0,2,item202);
        standardModel->item(1,0)->setChild(1,2,item212);
        standardModel->item(1,0)->setChild(2,2,item222);

3.3 设置图标

QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"顶级条目-1");

3.4 设置checkBox

        //设置节点带checkBox
        standardModel->item(0,0)->setCheckable(true);
        standardModel->item(0,0)->setCheckState(Qt::Checked);

3.5 默认选中

        //设置默认选中第几行
        QModelIndex index = standardModel->item(1,0)->index();
        ui->treeView->setCurrentIndex(index);

3.6 单击信号

void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
    qDebug() << "单击信号 index: " << index;
}

3.7 双击信号

void MainWindow::on_treeView_doubleClicked(const QModelIndex &index)
{
    qDebug() << "双击信号 index: " << index;
}

4 其它文章

QT TextEdit控件_双子座断点的博客-CSDN博客_qt textedit

QT QComboBox使用详解_双子座断点的博客-CSDN博客

QT QtableView操作详解_双子座断点的博客-CSDN博客_qtableview增删改查

Qt QStandardItemModel(1.超级详细用法)_双子座断点的博客-CSDN博客_qstandardmodel

Qt QStandardItemModel(2.超级详细函数)_双子座断点的博客-CSDN博客_qstandarditemmodel点击事件

QT QRadioButton使用详解_双子座断点的博客-CSDN博客_qt radiobutton

QT QLineEdit使用详解_双子座断点的博客-CSDN博客_qt qlineedit

Qt QMessageBox使用详解_双子座断点的博客-CSDN博客_qt message

QChart折线图、饼状图、条形图、曲线图_双子座断点的博客-CSDN博客_qchart样式

QChart属性详解_双子座断点的博客-CSDN博客_setanimationoptions

QCharts QValueAxis使用_双子座断点的博客-CSDN博客_qvalueaxis

Qt 5 等待提示框(开源 动态图)_双子座断点的博客-CSDN博客_qt 等待对话框

QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualizatio

QT QSpinBox 整数计数器控件 使用详解_双子座断点的博客-CSDN博客
QT QDoubleSpinBox 浮点计数器控件(使用详解)_双子座断点的博客-CSDN博客_qdoublespinbox信号槽
QT QSlider、QHorizontalSlider、QVerticalSlider 控件 使用详解_双子座断点的博客-CSDN博客_qslider设置步长

QT QTabWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QCalendarWidget控件 使用详解_双子座断点的博客-CSDN博客

QT QStackedWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QVBoxLayout 垂直布局控件_双子座断点的博客-CSDN博客

QT QHBoxLayout 水平布局控件_双子座断点的博客-CSDN博客
QT QGridLayout网格布局控件_双子座断点的博客-CSDN博客

QT QVerticalSpacer 弹簧控件_双子座断点的博客-CSDN博客
QT QHorizontalSpacer弹簧控件_双子座断点的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-614562.html

到了这里,关于QT QTreeView\QTreeWidget控件 使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt QTreeView简单使用

    QTreeView: 用于显示树状结构数据,适用于树状结构数据的操作。 ​ 利用QStandardlternModel来初始化数据,标准的基于项数据的数据模型类, 每个项数据可以是任何数据类型。 ​ 利用QStandardItem创建根节点与子节点的Item,并向内填充数据。数据类型可以为QString等字符,也可以是

    2024年02月03日
    浏览(59)
  • QT QCalendarWidget控件 使用详解

            本文详细的介绍了QCalendarWidget控件的各种操作,例如:设置日历的文本格式、设置日历的大小、日历移动、日历隐藏显示、设置日历时间最大值、设置日历时间最小值、单击信号槽、日历改变信号槽、双击鼠标信号槽等操作。         本系列QT全面详解文章目前

    2024年02月16日
    浏览(39)
  • QT QTabWidget 控件 使用详解

           本文详细的介绍了QTabWidget控件的各种操作,例如:新建界面、设置页面名字、设置提示信息、设置页面激活、设置标题栏位置、设置页面关闭按钮、设置页面关闭按钮、获取页面下标、获取页面总数、清空所有页面、删除某个页面、设置拖拽移动、设置显示页面、

    2024年02月03日
    浏览(40)
  • QT QLabel控件(使用详解)

            本文详细的介绍了TextLabel控件的各种操作,例如:显示边框、设置文字、设置字体、设置信息提示框、状态提示、居中对齐、加载图片、自适应图片大小、设置位置大小、样式表等操作。 本文作者原创,转载请附上文章出处与本文链接。 QLabel控件(使用详解)目录

    2024年02月15日
    浏览(41)
  • QT QToolBox控件使用详解

            本文详细的介绍了QToolBox控件的各种操作,例如:新建界面、添加页签、索引设置当前项、获取当前项的索引、获取当前项窗口、获取索引值是int的窗口、移除索引值项、获取项的数量、获取指定索引值、设置索引项是否激活、获取索引值项是否激活、设置项的图

    2024年02月09日
    浏览(35)
  • Qt 容器控件之Tab Widget 使用详解

    功能 QTabWidget 的一种带标签页的窗口,在这种类型的窗口中可以存储多个子窗口,每个子窗口的显示可以通过对应的标签进行切换。   相关API // 构造函数 QTabWidget::QTabWidget(QWidget *parent = Q_NULLPTR); // 公共成员函数 /* 添加选项卡addTab()或者插入选项卡insertTab()函数相关的参数如

    2024年02月13日
    浏览(43)
  • QT(C++)-QTreeview节点折叠与展开

    最近要用QT开发项目,对QT不是很熟,就根据网上的查到的知识和自己的摸索,将一些经验和知识记录下来。方便自己后续查找。 这个博客主要是QTreeview的节点折叠和展开。

    2024年02月10日
    浏览(34)
  • 学习文档:QT QTreeWidget及其代理

    学习文档:QT QTreeWidget及其代理 1. QT QTreeWidget简介 QT QTreeWidget是QT框架中的一个重要组件,用于显示树形数据结构。它提供了一种方便的方式来展示并操作带有层次关系的数据。QTreeWidget可以显示包含多个列的树形视图,每个项目可以有多个子项目,从而创建一个多级树形结构

    2024年02月20日
    浏览(26)
  • Python Qt学习(八)Treeview

    源代码: 截图:

    2024年02月09日
    浏览(45)
  • 【Qt UI】QT 窗口/控件置顶方法详解

    在QT开发中,有时候我们需要让某个窗口或控件始终显示在其他窗口之上。这种需求在多窗口应用或者弹出提示框等场景中非常常见。本文将详细介绍如何在QT5和QT6中实现这一功能,并对两者之间的差异进行深入分析。 使用 Qt::WindowStaysOnTopHint 标志 在QT5中,最常用的窗口置顶

    2024年02月05日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包