我在QStringList中有一个列表,其中包含一些类似如下的项目:
("name0", "name1", "name2",...) 我需要使用以下命令传递给QTableView:
appendRow(const QList<QStandardItem *> &) 那么,如何让QStringList中的QList将项添加到我的表中呢?
发布于 2019-06-10 22:37:13
使用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)));
}发布于 2019-06-10 23:11:30
这是可行的:
QStringListModel *model = new QStringListModel({"a","b","c"});
QListView view;
view.setModel(model); 在这种情况下,您不需要使用QStandardItemModel,它可以只是一个QListView。
https://stackoverflow.com/questions/56528187
复制相似问题