我刚刚开始使用Qt的模型/视图框架,我试图找到一个看起来很简单的问题的最佳解决方案。
我有一个Employee
表(Id, LastName, FirstName, Salary)
,我想显示同一个表的两个不同视图:
- 第一个视图:只有QListView
,包括名字和姓氏的串联。此视图不应该是可编辑的,但一次只能选择一个员工。
- 第二个视图:使用3x QLineEdit
作为名称,名字和工资。这三个字段用于更改数据库的内容。
我设法使用[Name, FirstName]
在QListView
内正确显示QSqlQueryModel
。
QSqlQueryModel* modelSQL = new QSqlQueryModel(this);
modelQuery->setQuery("SELECT CONCAT(LastName, ', ', FirstName) AS FullName, Id FROM Employee ORDER BY FullName ASC;");
empListView = new QListView;
empListView->setModel(modelSQL);
我设法使用QSqlTableModel
和QDataWidgetMapper
来显示QLineEdit
中的所有三个字段。
QSqlTableModel *model = new QSqlTableModel(this, this->db);
model->setTable("Employee");
model->select();
mapper = new QDataWidgetMapper(this);
mapper->setModel(modelSQL);
mapper->addMapping(this->lastNameEdit, 2);
mapper->addMapping(this->firstNameEdit, 3);
mapper->addMapping(this->salaryEdit, 4);
我的问题是,从modelQuery
更新模型的最佳策略是什么。我的意思是,当我点击QListView
并选择,例如,第三名员工;如何相应地同步其他三个字段?
非常感谢!