QSqlTableModel问题 - 没有自动更新

Mad*_*adH 8 sql database qt qt4

在Qt 4.4中设置表格模型后,如下所示:

    QSqlTableModel *sqlmodel = new QSqlTableModel();

    sqlmodel->setTable("Names");
    sqlmodel->setEditStrategy(QSqlTableModel::OnFieldChange);
    sqlmodel->select();
    sqlmodel->removeColumn(0);

    tableView->setModel(sqlmodel);
    tableView->show();
Run Code Online (Sandbox Code Playgroud)

内容显示正确,但无法编辑,错误:

     QSqlQuery::value: not positioned on a valid record
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 12

我可以在Qt 4.5.1中确认该错误的存在与您报告的完全相同,并且文档(例如此处)仍然给出了错误的示例(即包括removeColumn调用的示例).

作为一种解决方法,我试图编写一个连接到beforeUpdate信号的插槽,想要检查QSqlRecord有什么问题,它将在数据库中更新并可能修复它,但是我不能让它工作 - 对该记录参数的方法的任何调用都会导致我的玩具应用程序崩溃.

所以我已经放弃了这个想法并转而采用正确的方法来实现它(可见性应该由视图决定,而不是由模型决定,对吧? - ):失去removeColumn代替它tableView->setColumnHidden(0, true)而代替它.这样就可以隐藏ID并且一切正常.

所以我认为我们可以确认文档错误并在Qt跟踪器中打开它的问题,因此可以在下一轮文档中修复,对吧?

  • 花了我所有的声誉来证实:-)) (3认同)