Qt QTreeView 详解

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

一.常见接口使用

1.设置表头隐藏,设置表头

QStandardItemModel *model = new QStandardItemModel(this);

//设置表头隐藏
//ui->treeView->setHeaderHidden(true);

//设置表头
model->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");

//设置model 
ui->treeView->setModel(model);

//设置展开
ui->treeView->expandAll();

2.添加节点

这里添加两组数据

    QStandardItem *item1 = new QStandardItem("四年级");

    model->setItem(0,0,item1);
    QStandardItem *item00 = new QStandardItem("张三");
    QStandardItem *item10 = new QStandardItem("张四");
    QStandardItem *item20 = new QStandardItem("张五");

    QStandardItem *item01 = new QStandardItem("男");
    QStandardItem *item11 = new QStandardItem("女");
    QStandardItem *item21 = new QStandardItem("男");

    QStandardItem *item02 = new QStandardItem("15");
    QStandardItem *item12 = new QStandardItem("14");
    QStandardItem *item22 = new QStandardItem("16");

    model->item(0,0)->setChild(0,0,item00);
    model->item(0,0)->setChild(1,0,item10);
    model->item(0,0)->setChild(2,0,item20);

    model->item(0,0)->setChild(0,1,item01);
    model->item(0,0)->setChild(1,1,item11);
    model->item(0,0)->setChild(2,1,item21);

    model->item(0,0)->setChild(0,2,item02);
    model->item(0,0)->setChild(1,2,item12);
    model->item(0,0)->setChild(2,2,item22);


    QStandardItem *item2 = new QStandardItem("五年级");
    model->setItem(1,0,item2);

    QStandardItem *item200 = new QStandardItem("李三");
    QStandardItem *item210 = new QStandardItem("李四");
    QStandardItem *item220 = new QStandardItem("李五");

    QStandardItem *item201 = new QStandardItem("男");
    QStandardItem *item211 = new QStandardItem("女");
    QStandardItem *item221 = new QStandardItem("男");

    QStandardItem *item202 = new QStandardItem("15");
    QStandardItem *item212 = new QStandardItem("14");
    QStandardItem *item222 = new QStandardItem("16");

    model->item(1,0)->setChild(0,0,item200);
    model->item(1,0)->setChild(1,0,item210);
    model->item(1,0)->setChild(2,0,item220);

    model->item(1,0)->setChild(0,1,item201);
    model->item(1,0)->setChild(1,1,item211);
    model->item(1,0)->setChild(2,1,item221);

    model->item(1,0)->setChild(0,2,item202);
    model->item(1,0)->setChild(1,2,item212);
    model->item(1,0)->setChild(2,2,item222);

显示如下

qtreeview,Qt入门,qt,QTreeView,树

 3.节点可以带数据、图标、flag等

    QStandardItem *item1 = new QStandardItem("四年级");    
    item1->setData("班级");
    item1->setIcon();
    item1->setFlags();

    model->setItem(0,0,item1);

    //访问
    model->item(0,0)->data().toString();
    model->item(0,0)->icon();
    model->item(0,0)->flags();

4.设置节点带checkBox

    model->item(0,0)->setCheckable(true);
    model->item(0,0)->setCheckState(Qt::Checked);

5.设置默认选中第几行

    QModelIndex index = model->item(1,0)->index();
    ui->treeView->setCurrentIndex(index);

二.简单相应一下点击信号

这里简单打印一下节点的名称


//相应这个信号
void clicked(const QModelIndex &index)

void Widget::on_treeView_clicked(const QModelIndex &index)
{
    qDebug()<<model->itemFromIndex(index)->text();
}

三.右键菜单

      //打开右键菜单属性
      ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);

      //右键菜单
      menu = new QMenu(ui->treeView);
      menu->addAction("添加");
      menu->addAction("删除");

      //响应右键菜单信号槽
      connect(ui->treeView,&QTreeView::customContextMenuRequested,
              this,&Widget::slotMenuPopup);

      void Widget::slotMenuPopup(const QPoint &pos)
      {
          menu->exec(ui->treeView->mapToGlobal(pos));
      }

    

四.设置qss

const QString styles = "QTreeView\
{\
    background-color: #5B677A;\
    font-size:17px;\
    color: white;\
}\
QTreeView::item:hover\
{\
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);\
    border: 1px solid #bfcde4;\
}\
QTreeView::item:hover\
{\
    background: rgb(69, 187, 217);\
}\
QTreeView::item:selected:active\
{\
    background: rgb(63, 147, 168);\
}\
QTreeView::item:selected:!active\
{\
    background: rgb(63, 147, 168);\
}\
QTreeView::branch\
{\
    background:#5B677A;\
}\
QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings\
{\
    border-image: none;\
    background:#5B677A;\
    image: url(image/Folder-1.png);\
}\
QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings\
{\
    border-image: none;\
    background:#5B677A;\
    image: url(image/Open-Folder.png);\
}";
调用ui->treeView->setStyleSheet(styles);

五.运行效果

qtreeview,Qt入门,qt,QTreeView,树

六.源码

https://download.csdn.net/download/wzz953200463/85014146文章来源地址https://www.toymoban.com/news/detail-595103.html

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

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

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

相关文章

  • QTreeView 显示网格样式

    QTreeView 提供了三个接口 1、void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate):按行生效 2、void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate): 按列生效 3、void setItemDelegate(QAbstractItemDelegate *delegate); //所有生效

    2024年02月07日
    浏览(33)
  • 入门指南:Qt中的QDateTime详解

    Qt是一种流行的跨平台应用程序开发框架,它提供了丰富的功能和类库来简化开发者的工作。其中,QDateTime类是Qt中处理日期和时间的重要组件之一。本篇博文将为您详细介绍Qt中QDateTime的相关知识,帮助您入门并充分利用这个强大的类。 什么是QDateTime? 创建QDateTime对象 访问

    2024年02月16日
    浏览(46)
  • 【嵌入式Qt开发入门】初识Qt——Linux下安装Qt

            Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面(Graphical User Interface,简 称 GUI)程序。         Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部; Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多

    2024年02月16日
    浏览(59)
  • Qt6入门教程 6:Qt元对象系统

    目录 一.什么是Qt元对象系统? 二.编译时Qt Creator偷摸做了哪些事情? 1.uic 2.rcc 3.moc Qt中的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。元对象系统是基于以下3个条件的: ●该类必须继承自QObject类; ●必须在类的私有声

    2024年01月18日
    浏览(58)
  • Qt6入门教程 4:Qt Creator常用技巧

    在上一篇Qt6入门教程 3:创建Hello World项目中,通过创建一个Qt项目,对Qt Creator已经有了比较直观的认识,本文将介绍它的一些常用技巧。 Qt Creator启动后默认显示欢迎页面 创建项目已经用过了,打开项目也很简单,就是打开一个已经存在的项目。 项目历史记录非常有用,能

    2024年02月03日
    浏览(55)
  • QT List&Qvector at赋值出错以及解决办法 QT基础入门【QT存储结构】

    在Qt中QList,Qvector一般获取元素都是通过at(index)来获取,但是at()的返回是一个const 常引用,也就是元素不支持改变 也就是说*.at(i)并不能用来给Qlist与Qvector来赋值,要采用其他方式赋值

    2024年02月10日
    浏览(80)
  • 【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境

    QT 是一个跨平台的应用程序开发框架,它提供了丰富的工具和类库,用于开发图形用户界面(GUI)程序。Qt 提供了 C++ 编程语言接口,同时也支持其他编程语言,如 Python和QML。 以下是 QT 的一些主要特点: 跨平台:Qt 支持在多个操作系统上进行开发,包括 Windows、macOS、Linux、

    2024年01月17日
    浏览(62)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

            绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线 图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关

    2024年02月12日
    浏览(47)
  • qt初入门1:qt读文件的几种方式简单整理

    工作变动开始接触qt,涉及到qt读文件相关业务,简单整理一下qt读文件几种方式,后面发现有其他的再新增 测试demo的方式归纳汇总几种读qt文件的方法 : 1:获取文件源按钮,并打印获取到的相关文件名 2:使用qfile直接读文件,显示耗时时间 3:使用qdatastream读文件,显示耗

    2024年02月12日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包