Версия Qt: 5.8
Допустим, у меня есть следующие таблицы 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
Каков наилучший/рекомендуемый способ сделать это? Я вижу следующие два способа, но я считаю, что ни один из них не лучший способ сделать это.
- Используйте виджет таблицы, представляющий собой представление таблицы на основе элементов с моделью по умолчанию. Чтобы сделать это, я предполагаю, что мне нужно будет сделать QSqlQuery, чтобы получить данные из моей QSqlDatabase и просто таким образом заполнить виджет таблицы.
- Используйте Table View, что потребует от меня создания моей собственной QSqlTableModel для модели данных представления. Согласно документации для QSqlTableModel, это высокоуровневый интерфейс для чтения и записи записей базы данных из одной таблицы. Это означает, что мне понадобятся две QSqlTableModels, по одной для каждой из моих таблиц выше. Однако табличное представление может использовать только одну модель и отображать все данные из этой модели. Я думаю, что единственный способ, которым это сработает, - это объединить таблицы в одну таблицу только с той информацией, которую я хочу, чтобы пользователь видел. Я чувствую, что это было бы очень уродливо, но возможно. В таком случае, должен ли я иметь всего три таблицы — две приведенные выше плюс объединенную для просмотра пользователями?
Я чувствую, что #1 лучше из этих двух, но мне интересно, есть ли еще лучший способ, чем оба из них.