目录
一、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



















