gpt4 book ai didi

c++ - 如何在 QTreeView 的第二列中添加项目

转载 作者:行者123 更新时间:2023-11-30 04:46:20 27 4
gpt4 key购买 nike

代码说明:

首先我创建项目,接下来我定义第一个列结构,最后我尝试定义第二个列结构。

对于第一列结构,我使用 QStandardItems 的 appendRow() 方法。

对于第二列结构,我对 QStandardItemModel 使用了 setItem() 方法。

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);

// QStandardItemModel
treeModel = new QStandardItemModel(this);

// Create Items
QStandardItem *item_0 = new QStandardItem("Item 0");
QStandardItem *item_0_0 = new QStandardItem("Item 0_0");
QStandardItem *item_1 = new QStandardItem("Item 1");
QStandardItem *item_1_0 = new QStandardItem("Item 1_0");
QStandardItem *item_1_0_0 = new QStandardItem("Item 1_0_0");

QStandardItem *item_2 = new QStandardItem("Item 2");
QStandardItem *item_3 = new QStandardItem("Item 3");

// Root Item
QStandardItem * rootItem = treeModel->invisibleRootItem();

//Define the tree structure
rootItem->appendRow(item_0);
rootItem->appendRow(item_1);

item_0->appendRow(item_0_0);

item_1->appendRow(item_1_0);
item_1_0->appendRow(item_1_0_0);

//Define 2nd column structure
treeModel->setItem(0,1,item_2);
treeModel->setItem(1,1,item_3);

// QTreeView
ui->treeView->setModel(treeModel);

}

此代码生成下图。但我想要的是将 Item3 放在 Item2 的正下方。

enter image description here

最佳答案

有多种方法可以实现您想要的行为,但以下方法可能是最直接的一种。我建议您仔细研究 Qt 文档。一个好主意是采用 QTreeView 而不是 QTreeWidget,后者不太灵活。

要完全掌握 Qt 中的 MVC 概念可能需要一些时间,但这是值得的。这是我的解决方案。

#include <QApplication>
#include <QStandardItemModel>
#include <QTreeView>

int main(int argc, char** args) {
QApplication app(argc, args);
auto model=new QStandardItemModel;

// Create Items
QStandardItem *item_0 = new QStandardItem("Item 0");
QStandardItem *item_0_0 = new QStandardItem("Item 0_0");
QStandardItem *item_1 = new QStandardItem("Item 1");
QStandardItem *item_1_0 = new QStandardItem("Item 1_0");
QStandardItem *item_1_0_0 = new QStandardItem("Item 1_0_0");

QStandardItem *item_2 = new QStandardItem("Item 2");
QStandardItem *item_3 = new QStandardItem("Item 3");

// Root Item
QStandardItem * rootItem = model->invisibleRootItem();

//Define the tree structure
rootItem->appendRow(item_0);
rootItem->appendRow(item_1);

item_0->appendRow(QList<QStandardItem*>{item_0_0,item_2});
item_1->appendRow(item_1_0);
item_1_0->appendRow(item_1_0_0);
model->setItem(1,1,item_3);

auto view=new QTreeView;
view->setModel(model);
view->show();
app.exec();
}

关于c++ - 如何在 QTreeView 的第二列中添加项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56811733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com