Qt: set columns in treeView

How can I implement this code for qTreeWidget for qTreeView?

for (const auto & i : names) {
    QTreeWidgetItem * item = new QTreeWidgetItem(ui->treeWidget);
    item->setText(0, QString::fromStdString(i));
    ui->treeWidget->addTopLevelItem(item);
    const std::unordered_map<std::string, double> map = m_reader.getMapFromEntry(i);
    for (const auto & j : map) {
        QTreeWidgetItem * item2 = new QTreeWidgetItem();
        item2->setText(0,QString::fromStdString(j.first));
        item2->setText(1,QString::number(j.second));
        item->addChild(item2);
    }

}

I have a model and treeView, for example:

m_model = new QStandardItemModel(m_reader.getAllNames().size(),2,this);
ui->treeView->setModel(m_model);

I tried this, but it shows only one column:

QStandardItem * parentItem = m_model->invisibleRootItem();
for (const auto & i : names) {
    QStandardItem * item = new QStandardItem(QString::fromStdString(i));
    parentItem->appendRow(item);
    const std::unordered_map<std::string, double> map = m_reader.getMapFromEntry(i);
    for (const auto & j : map) {
        QList<QStandardItem *> rowItems;
        rowItems << new QStandardItem(QString::fromStdString(j.first));
        rowItems << new QStandardItem(QString::number(j.second));
        item->appendRow(rowItems);
    }
}

With treeWidget, I set columnCount like this:

ui->treeWidget->setColumnCount(2);

But treeView does not have such a method.

So, to summarize: How can I implement a TreeView with multiple columns?

EDIT:
To clarify, I want something like this:

| -A
| | -BC
| | -DE

where A is the parent and B, C, D, E are children, with B, D in column 0 and C, E in column 1.

Hope this helps!

+4
source share
2 answers

. , . (, QListView , QTableView).

QStandardItemModel, , .

, :

 QStandardItemModel model(4, 4);
 for (int row = 0; row < 4; ++row) {
     for (int column = 0; column < 4; ++column) {
         QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));
         model.setItem(row, column, item);
     }
 }

4 , setItem().

QStandardItemModel:: appendRow() :

QList<QStandardItem*> items;
items.append(new QStandardItem(tr("One"));
items.append(new QStandardItem(tr("Two"));
model->appendRow(items);

"One" "Two" . . QStandardItemModel.

. QTreeView , .

+5

:

QTreeView , QStandardItems. "" , QStandardItems . :

QStandardItemModel *objectTreeModel = new QStandardItemModel(NULL);
QStandardItem *mainItem = new QStandardItem(tr("Main Item"));
QStandardItem *subItem1 = new QStandardItem(tr("Sub-Item 1"));
QStandardItem *subItem2 = new QStandardItem(tr("Sub-Item 2"));
mainItem->appendRow(QList<QStandardItem *>() << subItem1 << subItem2);

QStandardItem *dummyItem = new QStandardItem();

objectTreeModel->appendRow(QList<QStandardItem *>() << mainItem << dummyItem );

2 , mainItem, .

+4

Source: https://habr.com/ru/post/1524858/


All Articles