Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 刷新QListView不工作_C++_Qt_Qlistview_Qtsql_Qsqltablemodel - Fatal编程技术网

C++ 刷新QListView不工作

C++ 刷新QListView不工作,c++,qt,qlistview,qtsql,qsqltablemodel,C++,Qt,Qlistview,Qtsql,Qsqltablemodel,需要一些帮助来查找为什么我的QListView不会刷新 我将QListView与QSqlTableModel一起使用。我在以下函数中实现该模型。我从类的构造函数调用这个函数 void myclass::refresh { model_path=新的QSqlTableModelthis; model_path->setTablemytable; 模型路径->setEditStrategyQSqlTableModel::OnManualSubmit; 模型路径->选择; ui->listView\u

需要一些帮助来查找为什么我的QListView不会刷新

我将QListView与QSqlTableModel一起使用。我在以下函数中实现该模型。我从类的构造函数调用这个函数

void myclass::refresh { model_path=新的QSqlTableModelthis; model_path->setTablemytable; 模型路径->setEditStrategyQSqlTableModel::OnManualSubmit; 模型路径->选择; ui->listView\u路径->setModelmodel\u路径; ui->listView\u path->setModelColumn1; } 下面的函数将添加一行,qlistView将刷新而不会出现任何问题

void myclass::单击按钮添加 { QSqlRecord rec model_path->record; rec.setValue1,用户界面->行编辑->文本; 记录设置值2,2; 模型路径->插入记录-1,记录; 发射模型路径->布局更改; } 以下函数将根据QListView中高亮显示的行删除一行。删除操作的作用是,一旦完成.submitAll,该行将从数据库中删除。但是,QListView的更新并不一致

void myclass::在按钮上单击“删除” { model\u path->removowui->listView\u path->currentIndex.row; 发出模型路径->数据变更DUI->列表视图路径->当前索引,用户界面->列表视图路径->当前索引; 发射模型路径->布局更改; } 如果删除一行,列表将不会刷新。如果我添加一个或多个新行,然后删除其中一个或所有行,它们将被刷新。正如您所看到的,我使用dataChanged和layoutChanged,但它们在这里似乎没有什么作用


我不明白为什么刷新不一致。有人能帮忙吗?

添加或删除某些行时,不需要同时调用layoutChanged或dataChanged。它们不是为此类更新而设计的。检查


可能,您的问题在于理解编辑策略QSqlTableModel::OnManualSubmit。尝试将其更改为QSqlTableModel::OnFieldChange

谢谢您的回答。我使用layoutChanged和dataChanged只是为了说明两者都不起作用。此外,OnManualSubmit是正确的编辑策略,因为我只在最后提交更改。