2016-09-20 3 views
0

В SQLite есть две таблицы. Для простого примера - человек и адрес. Как сопоставить данные текущего человека из обеих таблиц для создания виджетов? Как нам синхронизировать текущий индекс двух таблиц, если мы используем два QDataWidgetMapper?Qt - Сопоставление двух таблиц в виджетах с использованием QDataWidgetMapper

Есть ли другой подход для отображения связанных данных по форме, включая вставку?

Я был бы очень признателен за вашу помощь и примеры.

ответ

0

Если у вас есть право, вы хотите join two SQL tables (скажем person и address). Если это так, вам понадобится QSqlQueryModel.

Обратите внимание, что QDataWidgetMapper используется для совместного использования одной модели среди нескольких виджетов. Однако в этом случае кажется, что вы хотите отображать данные из двух таблиц в одном виджете.

QSqlQueryModel *model = new QSqlQueryModel; 
model->setQuery("SELECT name, city FROM person INNER JOIN address ON persion.id=address.id"); 
model->setHeaderData(0, Qt::Horizontal, tr("Name")); 
model->setHeaderData(1, Qt::Horizontal, tr("City")); 

Теперь вы можете использовать эту 2D-модель везде, где вам нужно. Также вы можете использовать QDataWidgetMapper с этой моделью, чтобы делиться своими данными с несколькими виджетами.