QT模型/视图项目不显示字符串从QList



我的QTableView不显示QStringList中的字符串。

在QTableWidget我有QTableWidgetItems。我必须手动设置字符串还是视图会自动显示它们?在所有的教程中,我都没有看到"->setItem",它们是自动出现的。

我有2个qlineedit,给我的qstring模型:

void View::pushButtonClicked() {
  meinModel->setData(txtname->text(), txtvalue->text());
}

在setData中,我将字符串推入两个qlist中。

names.push_back(name);
values.push_back(value);

我发出一个datachchanged信号,索引从左上角到右下角。

QModelIndex topLeft = createIndex(names.size()+1,0);
QModelIndex bottomRights = createIndex(names.size()-1,1);
emit dataChanged(topLeft, bottomRights);

我有一个QAbstractTableModel,所以我覆盖了columnCount, rowCount和数据方法。在我的data()方法中,我返回我的值和名称:

QString returnValue;
if(0 == index.column()) { returnValue = names.at(index.row()); }

所有这些编译没有警告,但不能正常工作:(有什么我做错了吗?

一个明显的问题是您没有正确地获得dataChanged的语义。dataChanged表示现有项的值发生了变化。当您通过添加/删除行或列来更改模型的结构时,您必须将修改包含在beginXxxendXxx调用中-详细信息请参阅此回答。

例如:

void MyModel::setData(const QString & name, const QString & value) {
  beginInsertRows(QModelIndex(), names.size(), names.size());
  names.push_back(name);
  values.push_back(value);
  endInsertRows();
}

相关内容

  • 没有找到相关文章

最新更新