我的QTableView没有显示来自QStringList的字符串。
在QTableWidget中我有QTableWidgetItems。我必须手动设置字符串还是视图会自动显示它们?在所有教程中,我都没有看到" - > setItem",它们会自动显示。
我有2个QLineEdits将QStrings提供给我的模型:
void View::pushButtonClicked() {
meinModel->setData(txtname->text(), txtvalue->text());
}
在setData中,我将字符串推入两个QLists。
names.push_back(name);
values.push_back(value);
我发出一个dataChanged信号,其索引来自topleft和bottomright。
QModelIndex topLeft = createIndex(names.size()+1,0);
QModelIndex bottomRights = createIndex(names.size()-1,1);
emit dataChanged(topLeft, bottomRights);
我有一个QAbstractTableModel,所以我重写了columnCount,rowCount和data方法。 在我的data()方法中,我返回我的值和名称:
QString returnValue;
if(0 == index.column()) { returnValue = names.at(index.row()); }
所有这些都是在没有警告的情况下编译的,但是没有正常工作:(有什么我明显做错的吗?
答案 0 :(得分:0)
一个明显的问题是你没有正确地获得dataChanged
的语义。 dataChanged
表示现有项已更改其值。通过添加/删除行或列来更改模型的结构时,您必须将修改括在beginXxx
和endXxx
调用中 - 请参阅this answer的信息。
例如:
void MyModel::setData(const QString & name, const QString & value) {
beginInsertRows(QModelIndex(), names.size(), names.size());
names.push_back(name);
values.push_back(value);
endInsertRows();
}