Код объяснить:
Сначала я создаю элементы, затем определяю структуру 1-го столбца и, наконец, пытаюсь определить структуру 2-го столбца.
Для первой структуры столбца я использую метод appendRow() для QStandardItems.
Для второй структуры столбца я использую метод setItem() для QStandardItemModel.
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.





Есть много способов добиться желаемого поведения, но следующий, пожалуй, самый простой. Я предлагаю вам внимательно изучить документы Qt. Хорошая идея — взять QTreeView вместо QTreeWidget, что менее гибко.
Чтобы полностью понять концепцию MVC в Qt, может потребоваться некоторое время, но усилия того стоят. Вот мое решение.
#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();
}
Работайте идеально. Tnx много.