2017-05-15 5 views
0

Qt는 버전 : 5.8Qt는 C++ - 여러 SQLite는 테이블에서 하나 개의보기에 표시 데이터

하는의는 SQL 테이블 다음 내가 있다고 가정 해 봅시다

-- People 
person_id | first_name | last_name | age 

-- Cars, person_id is a foreign key to show that this person owns this car 
car_id | car_year | car_make | car_model | person_id 

의 내가 다음을 채우려한다고 가정 해 봅시다 테이블 뷰 또는 테이블 위젯 해당 데이터를 혼합하여

// Table that the user sees. Notice that not all the information from the tables is shown. 
first_name | last_name | car_year | car_make | car_model 

가장 좋은 방법/권장 방법은 무엇입니까? 나는 다음과 같은 두 가지 방법을 볼 수 있습니다,하지만 난 느낄 어느 쪽이

  1. 는 기본 모델 항목 기반의 테이블보기이다 표 위젯를 사용 할 수있는 가장 좋은 방법입니다. 이렇게하려면 QSqlQuery QSqlDatabase QSqlDatabase에서 데이터를 가져 와서 테이블 위젯을 그런 식으로 채우는 것이 좋습니다.
  2. 테이블보기을 사용하십시오.보기의 데이터 모델에 대해 QSqlTableModel을 직접 작성해야합니다. QSqlTableModel에 대한 설명서에 따르면 테이블에서 데이터베이스 레코드를 읽고 쓰는 고급 인터페이스입니다. 즉 위의 테이블 각각에 대해 하나씩 두 개의 QSqlTableModels이 필요합니다. 그러나 테이블 뷰는 하나의 모델 만 사용할 수 있으며 해당 모델의 모든 데이터가 표시됩니다. 이 방법이 효과가있을 수있는 유일한 방법은 테이블을 사용자가보기를 원하는 정보만으로 결합하는 것입니다. 나는 그것이 매우 추악하지만 가능할 것 같은 느낌이 든다. 이 경우 3 개의 테이블이 있어야합니까? 위에 두 개의 테이블과 사용자가 볼 수있는 결합 된 테이블이 둘 이상 있습니까?

나는 # 같은 1 그 둘 중 더 나은 느낌,하지만 여전히 그 둘보다 더 좋은 방법이 있는지 궁금하네요.

+0

가능한 복제 [하나 QTableView 여러 QSqlTableModels의 내용을 표시하는 방법 ?] (http://stackoverflow.com/questions/17156286/how-to-display-content-of-multiple-qsqltablemodels-in-one-qtableview) – MrEricSir

답변

0

person_id 당신이 여기서, QtWidgets.QTableView에 예를 여러 테이블에서 데이터를 표시 QtSql.QsqlRelationalTableModel를 사용할 수있는 테이블 people의 기본 키는 경우 :

QSqlRelationalTableModel rm = new QSqlRelationalTableModel(parentObject, database); 
rm→setTable(„cars“); 
rm→setRelation(4, QSqlRelation(„people“, „person_id“, „first_name, last_name“); 
rm→select(); 
QTableView tv = new QTableView(); 
tv→setModel(rm); 
tv→hideColumn(0);   # hide column car_id 
hh = tv->horizontalHeader(); 
hh→moveSection(4, 0);  # change order of columns 
hh→moveSection(5, 1); 
관련 문제