C++ QStringList至QList<;QStandardItem*>;
我在QStringList中有一个列表,其中包含以下项目: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
("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;ivoid 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);