目录

一、QTreeView界面相关

1、布局介绍

二、基本属性功能

1、设置单元格不能编辑

2、一次选中一个item

3、去掉鼠标移动到单元格上的虚线框

4、最后一列自适应

 三、代码展示   

  1、创建模型,导入模型

  2、 右键菜单栏                              

3、双击鼠标事件


此文为作者原创,创作不易,转载请标明出处!

一、QTreeView界面相关

1、布局介绍

先看下界面中创建个QTreeView

一般在处理较复杂的树形结构数据的时候,使用QTreeView来展示数据

查看下基本属性功能

二、基本属性功能

1、设置单元格不能编辑

ui->treeView->setEditTriggers(QTreeView::NoEditTriggers);//设置单元格不能编辑

2、一次选中一个item

ui->treeView->setSelectionBehavior(QTreeView::SelectItems);

3、去掉鼠标移动到单元格上的虚线框

ui->treeView->setFocusPolicy(Qt::NoFocus);
ui->treeView->header()->setStretchLastSection(true);

4、最后一列自适应

ui->treeView->header()->setStretchLastSection(true);

 三、代码展示   

  1、创建模型,导入模型

 model = new QStandardItemModel(ui->treeView);//创建模型
ui->treeView->setModel(model);//导入模型

加入头部标签设置:

 ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);
    model->setHorizontalHeaderLabels(QStringList()<<u8"项目"
    <<QStringLiteral("当前值")<<u8"类型");//设置头部标签

然后进行子条目的创建,增加图标

    item = new QStandardItem(u8"区域1");//创建一个条目对象
    model->appendRow(item);//通过模型对象添加这个条目
    item->setIcon(QIcon(":/image/item1.png"));//添加图标


    model->setItem(1,0,new QStandardItem(u8"区域2"));
    model->setItem(2,0,new QStandardItem(u8"区域3"));
    model->item(1)->setIcon(QIcon(":/image/item1.png"));

  2、 右键菜单栏                              

调用的信号是customContextMenuRequested()

QModelIndex current_index = ui->treeView->indexAt(pos);
    //选择对应的根节点,并添加右击删除的操作
    if(current_index.parent()== ui->treeView->rootIndex())
    {
        QMenu* popMenu = new QMenu(ui->treeView);
        QAction* start = new QAction(u8"开始", this);
        QAction* stop = new QAction (u8"停止",this);
        popMenu->addAction(start);
        popMenu->addAction(stop);
        popMenu->exec(QCursor::pos());
        delete start;
        delete stop;
        delete popMenu;
    }

3、双击鼠标事件

双击鼠标,针对不同的节点,有效不一样,调用信号如下:

代码展示:

void Widget::on_treeView_doubleClicked(const QModelIndex &index)
{
   if(index.parent()==ui->treeView->rootIndex())
   {
       qDebug()<<"first="<<index.data().toString();//只针对根节点有效
   }
   else if(index.parent().parent()==ui->treeView->rootIndex())//只针对二级节点有效
   {
      qDebug()<<"second="<<index.data().toString();
   }
   else if(index.parent().parent().parent()==ui->treeView->rootIndex()) //只针对三级节点有效
   {
     qDebug()<<"third="<<index.data().toString();
   }
}

 

Demo展示

先放在精灵球中,后期开放

推荐博客:精灵球Plus介绍_清风徐来Groot的博客-CSDN博客

百度云盘:链接:https://pan.baidu.com/s/11b634VvKMIsGdahyBLpZ3Q   提取码:6666  

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐