【发布时间】:2014-06-03 01:46:07
【问题描述】:
需要帮助找出我的QListView 不会刷新的原因。
我正在使用 QListView 和 QSqlTableModel。我在以下函数中实现模型。我从类的构造函数中调用这个函数。
void myclass::refresh()
{
model_path = new QSqlTableModel(this);
model_path->setTable("mytable");
model_path->setEditStrategy(QSqlTableModel::OnManualSubmit);
model_path->select();
ui->listView_path->setModel(model_path);
ui->listView_path->setModelColumn(1);
}
以下函数将添加一行,qlistView 刷新没有任何问题。
void myclass::on_pushButton_add_clicked()
{
QSqlRecord rec (model_path->record());
rec.setValue(1,ui->lineEdit->text());
rec.setValue(2,2);
model_path->insertRecord(-1, rec);
emit model_path->layoutChanged();
}
以下函数将根据QListView 中突出显示的行删除一行。一旦.submitAll 完成,删除就会从数据库中删除该行。但是QListView 不会持续更新。
void myclass::on_pushButton_remove_clicked()
{
model_path->removeRow(ui->listView_path->currentIndex().row());
emit model_path->dataChanged(ui->listView_path->currentIndex(),ui->listView_path->currentIndex());
emit model_path->layoutChanged();
}
如果我删除一行,列表将不会刷新。如果我添加一个或多个新行,然后删除其中一个或全部,它们将被刷新。如您所见,我同时使用了dataChanged 和layoutChanged,但它们在这里似乎没有多大作用。
我不明白为什么刷新不一致。有人可以帮忙吗?
【问题讨论】:
标签: c++ qt qlistview qtsql qsqltablemodel