QTreeView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QTreeView相关的知识,希望对你有一定的参考价值。
参考技术A #include"QDebug"#include"QTreeView"
#include"QStandardItemModel"
#include"QPushButton"
#include"QItemSelectionModel"
#include"QModelIndex"
#include"QStandardItem"
this->resize(1000,1000);
//创建树
QTreeView *treeView=new QTreeView(this);
treeView->resize(800,800);
treeView->move(100,100);
QStandardItemModel *model=new QStandardItemModel(treeView);
treeView->setModel(model);
//model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("项目名")<<QStringLiteral("相关信息1")<<QStringLiteral("相关信息2"));
//model->setVerticalHeaderLabels(QStringList()<<QStringLiteral("项目名")<<QStringLiteral("相关信息1")<<QStringLiteral("相关信息2"));
QStandardItem * item = new QStandardItem(tr("item one"));//创建一个条目对象
model->appendRow(item);
//去掉表头
treeView->setHeaderHidden(true);
//利用QList<QStandardItem*>添加节点
QList itemList1;
QList itemList2;
QStandardItem * item1 = new QStandardItem(tr("item one"));//创建一个条目对象
itemList1.append(item1);
QStandardItem * item2 = new QStandardItem(tr("item two"));//创建一个条目对象
itemList1.append(item2);
QStandardItem * item3 = new QStandardItem(tr("item three"));//创建一个条目对象
// item.push_back(item3);
QStandardItem * item4 = new QStandardItem(tr("item four"));//创建一个条目对象
// item.push_back(item4);
QStandardItem * item5 = new QStandardItem(tr("item five"));//创建一个条目对象
QStandardItem * item6 = new QStandardItem(tr("item five"));//创建一个条目对象
itemList2<
model->appendRow(item3);
model->appendRow(item4);
//model->setItem(1,new QStandardItem("123"));
item3->appendRows(itemList1);
item2->appendRows(itemList2);
//item->setChild(0,new QStandardItem("456"));
//添加子节点
QPushButton *buttonAdd=new QPushButton(treeView);
buttonAdd->move(300,700);
buttonAdd->setText("添加");
QItemSelectionModel *currentModel=new QItemSelectionModel();
connect(buttonAdd,&QPushButton::clicked,this,[=]()
QStandardItem *currentModel=model->itemFromIndex(treeView->currentIndex());
if(model->rowCount()>0)
currentModel->appendRow(new QStandardItem("333"));
);
//删除子节点
QPushButton *buttonDel=new QPushButton(treeView);
buttonDel->move(500,700);
buttonDel->setText("删除");
connect(buttonDel,&QPushButton::clicked,this,[=]()
QStandardItem *currentModel=model->itemFromIndex(treeView->currentIndex());
qDebug()<<"treeView->currentIndex().row()"<currentIndex().row();
if(model->rowCount()>0)
if(currentModel->parent())
currentModel->parent()->removeRow(treeView->currentIndex().row());
else
model->removeRow(treeView->currentIndex().row());
qDebug()<rowCount();
);
//打开根节点
treeView->expand(model->indexFromItem(model->item(0)));
如何删除 QTreeView 左侧的空白区域
【中文标题】如何删除 QTreeView 左侧的空白区域【英文标题】:How to remove the empty space at the left of a QTreeView 【发布时间】:2013-12-26 12:13:37 【问题描述】:我有一个子类QTreeView
。我需要让它看起来像简单的QListView
没有空间(左角间距)的子项。我该怎么办? Qt 是 4.7.4。
已经尝试过setRootIsDecorated
并没有帮助。我试过QTreeView::setIndentation
,但也没有用。
【问题讨论】:
尝试使用QTreeView::setIndentation
有同样的question。
如果它不能帮助显示您如何填充树视图。
很好的答案!我也从模型中填充了树视图,并且缩进没有任何问题:/
好的。你想看哪种方法?
【参考方案1】:
我对 QTreeWidgets 也有同样的问题,它们有一个默认启用的“rootIsDecorated”设置。禁用它,工作完成。
【讨论】:
【参考方案2】:问题在于以某种方式改变了我的QTreeView
的方法。所以,在这个方法之后设置缩进解决了这个问题。但是我还是不明白为什么在QTreeView
的构造函数中设置缩进是没有用的。
【讨论】:
以上是关于QTreeView的主要内容,如果未能解决你的问题,请参考以下文章