目录
一、QTreeView界面相关
1、布局介绍
二、基本属性功能
1、设置单元格不能编辑
2、一次选中一个item
3、去掉鼠标移动到单元格上的虚线框
4、最后一列自适应
三、代码展示
1、创建模型,导入模型
2、 右键菜单栏
3、双击鼠标事件
此文为作者原创,创作不易,转载请标明出处!
先看下界面中创建个QTreeView
一般在处理较复杂的树形结构数据的时候,使用QTreeView来展示数据
查看下基本属性功能
ui->treeView->setEditTriggers(QTreeView::NoEditTriggers);//设置单元格不能编辑
ui->treeView->setSelectionBehavior(QTreeView::SelectItems);
ui->treeView->setFocusPolicy(Qt::NoFocus);
ui->treeView->header()->setStretchLastSection(true);
ui->treeView->header()->setStretchLastSection(true);
model = new QStandardItemModel(ui->treeView);//创建模型
ui->treeView->setModel(model);//导入模型
加入头部标签设置:
ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);model->setHorizontalHeaderLabels(QStringList()<
然后进行子条目的创建,增加图标
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"));
调用的信号是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;}
双击鼠标,针对不同的节点,有效不一样,调用信号如下:
代码展示:
void Widget::on_treeView_doubleClicked(const QModelIndex &index)
{if(index.parent()==ui->treeView->rootIndex()){qDebug()<<"first="<treeView->rootIndex())//只针对二级节点有效{qDebug()<<"second="<treeView->rootIndex()) //只针对三级节点有效{qDebug()<<"third="<
Demo展示
先放在精灵球中,后期开放
推荐博客:精灵球Plus介绍_清风徐来Groot的博客-CSDN博客
百度云盘:链接:https://pan.baidu.com/s/11b634VvKMIsGdahyBLpZ3Q 提取码:6666