我的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
表示现有项的值发生了变化。当您通过添加/删除行或列来更改模型的结构时,您必须将修改包含在beginXxx
和endXxx
调用中-详细信息请参阅此回答。
void MyModel::setData(const QString & name, const QString & value) {
beginInsertRows(QModelIndex(), names.size(), names.size());
names.push_back(name);
values.push_back(value);
endInsertRows();
}