Нужна помощь, чтобы выяснить, почему мой 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
, но здесь они, кажется, мало что делают.
Я не понимаю, почему обновление не является последовательным. Кто-нибудь может помочь?