나는 QTableViews
이 두 개있는 QMainWindow
입니다. 각 QTableView
에는 고유 한 QSqlRelationalTableModel
이 있습니다. 두 모델의 편집 전략으로 OnManualSubmit
을 사용하고 있습니다. 두 모델 모두 동일한 데이터베이스를 사용하고 setTable
(각각 다른 테이블에 도달 함)을 사용하여 데이터를 채운 다음 select()
이옵니다.QTableView가 외래 키를 새로 고치지 않습니까?
두 번째 테이블의 모델은 setRelation
에 대한 적절한 호출로 설정되어 첫 번째 모델을 채우는 데 사용 된 테이블에 연결됩니다. 두 번째 (하위)보기에서 나는 view->setItemDelegate(new QSqlRelationalDelegate(view));
모두를 호출합니다. 첫 번째보기에 나타나는 데이터는 두 번째보기의 해당 필드에 드롭 다운 목록에 나열됩니다.
내 문제 : 첫 번째 (상위)보기에 레코드를 추가, 편집 또는 삭제하고 데이터베이스에 저장하면 드롭 다운이 정확하도록 두 번째보기를 새로 고쳐야합니까?
두 번째 (하위)보기에서 저장하지 않은 수정 사항이있을 수 있으며 삭제하지 않으려하지 않으며 아직 저장하지 않으려합니다. 드롭 다운 목록을 적절하게 업데이트하기 만하면됩니다.
child_model->relationModel(fk_col)->select();
을 시도했지만 작동하지만 child_model->relationModel(fk_col)->columnCount();
은 선택이 부모 테이블의 모든 필드에서 작동하고 있음을 나타내며 불필요한 비관적 인 것처럼 보입니다.
이것은 내 첫 번째 시도 인 <QtSql>
과 QTableView
이므로 근본적인 것이 누락되었을 수 있습니다. 두 모델 모두에 동일한 모델을 사용하는 방법이있을 수 있으며 자동으로 새로 고침이 발생합니까? 하위보기 드롭 다운을 새로 고치는 적절한 방법은 무엇입니까?