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的主要内容,如果未能解决你的问题,请参考以下文章