我有一个数据矩阵,我只是将它存储为QStringLists的QList,它们都包含相同数量的QStrings。通过这种方式,数据看起来几乎就像一个电子表格。
我使用QTableView将这些数据呈现给用户:
void DialogwitQTableView::setData(QList<QStringList> s)
{
/* Create the data model */
// 1. give it some headers
QStandardItemModel model = new QStandardItemModel(s.count(),25,this); //x Rows and 25 Columns
model->setHorizontalHeaderItem(0, new QStandardItem(QString("Column 1")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Column 2")));
// ...
model->setHorizontalHeaderItem(24, new QStandardItem(QString("Column 25")));
// 2. populate the model with the data
for(int i = 0; i < s.count() ; i++)
{
for(int j = 0; j < s[i].count() ; j++)
model->setItem(i,j,new QStandardItem(QString(s[i][j])));
}
ui->NameOfTheTableView->setModel(model);
}
现在,如果用户想要更改某些数据,他只需双击对话框中的QTableView并编辑他想要的内容。
如何在数据中进行编辑?如何使用新信息调整QStringList?
如果我搜索文档,我主要发现QTableViews链接到数据库,但我不知道这将如何与内存中的简单数据结构一起使用。如果我去QtDesigner并点击TableView的“转到插槽”,我也看不到名为“datachanged”的插槽或任何类似的插槽。
有什么想法吗?我觉得很困难,我可能正在概述一些东西,任何提示都非常受欢迎。
查看doco,QTableView从QAbstractItemView继承了6个信号
http://doc.qt.digia.com/qt/qabstractitemview.html#signals
该类具有捕获编辑和编辑触发器的各种功能。
一旦您可以捕获数据更改,您可以重新将其重新发送回您的模型,如果您正在使用MVC视图。我相信有很多例子。
希望有所帮助。
如果我搜索文档,我主要发现QTableViews链接到数据库,但我不知道这将如何与内存中的简单数据结构一起使用。
QTableView
是Qt的Model/View framework的一部分。有很多模型视图的例子。
如何在数据中进行编辑?如何使用新信息调整QStringList?
至少存在以下解决方案:
QStandardItemModel
方法从item
获取所有数据。QStandardItemModel::itemChanged
信号。