C++ QStringList至QList<;QStandardItem*>;

C++ QStringList至QList<;QStandardItem*>;,c++,qt,qlist,qstringlist,C++,Qt,Qlist,Qstringlist,我在QStringList中有一个列表,其中包含以下项目: ("name0", "name1", "name2",...) 我需要使用以下命令传递到QTableView: appendRow(const QList<QStandardItem *> &) appendRow(常量QList&) 那么,如何从QStringList获取QList以将项目添加到我的表中呢?使用QTableView您必须使用一个模型。通常这是通过子类化QAbstractTableModel

我在QStringList中有一个列表,其中包含以下项目:

("name0", "name1", "name2",...) 
我需要使用以下命令传递到QTableView:

appendRow(const QList<QStandardItem *> &) 
appendRow(常量QList&)

那么,如何从QStringList获取QList以将项目添加到我的表中呢?

使用
QTableView
您必须使用一个模型。通常这是通过子类化
QAbstractTableModel
完成的。有关不同Qt型号的更多信息,请参见:

如果您只想显示一个简单的表,我建议使用
QTableWidget
。API的工作原理如下:

("name0", "name1", "name2",...) 
QStringList=QStringList()tableWidget->insertRow(ui->tableWidget->rowCount());
对于(int i=0;itableWidget->setItem(ui->tableWidget->rowCount()-1,i,
新的QTableWidgetItem(列表位于(i));
对于在列中添加数据和添加标签,我建议使用以下代码:

ui->tableWidget->setHorizontalHeaderLabels({“List1”、“List2”});
QStringlist1=QStringList()tableWidget->columnCount();
对于(int i=0;itableWidget->setItem(i,ui->tableWidget->columnCount()-1,新的QTableWidgetItem(list.at(i));
}
这项工作:

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

在这种情况下,您不需要使用QStandardItemModel,它可以只是一个QListView。

不适合我。你的意思是使用
QStringListModel
?我认为这是一个重载函数。非常感谢你的回答。我有几个问题。首先,这是我用来在行而不是列中显示数据的代码:``ui->tableWidget->setRowCount(list1.size());ui->tableWidget->setHorizontalHeaderLabels({“List1”、“List2”});ui->tableWidget->insertColumn(ui->tableWidget->columnCount());对于(int i=0;itableWidget->setItem(ui->tableWidget->columnCount()-1,i,新的QTableWidgetItem(list1.at(i))```因此,setHorizontalHeaderLabels不起作用,第一行的第一个单元格中只有数字1。如果我想添加另一个列表,我是否遵循相同的代码但使用不同的QStringList,或者我是否可以在这里添加它?编辑:当我将setHorizontalHeaderLabels放在最后一行时,它正在工作(很高兴提供帮助!)我在我的答案中添加了更多的代码!
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)));
}
QStringListModel *model = new QStringListModel({"a","b","c"});
QListView view;
view.setModel(model);