QStringList to QList <QStandardItem *> - PullRequest
       40

QStringList to QList <QStandardItem *>

0 голосов
/ 10 июня 2019

У меня есть список в QStringList с некоторыми элементами вроде этого:

("name0", "name1", "name2",...) 

, которые мне нужно передать в QTableView, используя:

appendRow(const QList<QStandardItem *> &) 

, так как я могу получить QList изQStringList для добавления элементов в мою таблицу?

Ответы [ 2 ]

1 голос
/ 10 июня 2019

С QTableView вы должны использовать модель.Обычно это делается путем создания подкласса QAbstractTableModel.Подробнее о различных моделях Qt здесь: https://doc.qt.io/qt-5/model-view-programming.html

Если вы просто хотите отобразить простую таблицу, я предлагаю использовать QTableWidget.API работает следующим образом:

QStringList list = QStringList() << "name0" << "name1" << "name2";

ui->tableWidget->setColumnCount(list.size());
ui->tableWidget->insertRow(ui->tableWidget->rowCount());

for (int i = 0; i < list.size(); ++i)
    ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, i,
            new QTableWidgetItem(list.at(i)));

для добавления данных в столбцы и добавления меток. Я бы предложил этот код:

ui->tableWidget->setHorizontalHeaderLabels({"List1", "List2"});

QStringList list1 = QStringList() << "name0" << "name1" << "name2";
QStringList list2 = QStringList() << "surname0" << "surname1" << "surname2" << "surname3";

addColumn(list1);
addColumn(list2);

функция для добавлениястолбцы:

void MainWindow::addColumn(const QStringList &list)
{
    // resize rowcount as needed. qMax needs #include <QtMath>
    ui->tableWidget->setRowCount(qMax(list.size(), ui->tableWidget->rowCount()));

    ui->tableWidget->insertColumn(ui->tableWidget->columnCount());

    for (int i = 0; i < list.size(); ++i)
        ui->tableWidget->setItem(i, ui->tableWidget->columnCount() - 1, new QTableWidgetItem(list.at(i)));
}
0 голосов
/ 10 июня 2019

Это работает:

QStringListModel *model = new QStringListModel({"a","b","c"});
QListView view;
view.setModel(model); 

Вам не нужно использовать QStandardItemModel для этого случая, и это может быть просто QListView.

...