Учитывая две таблицы SQLite адреса а также Сообщения, Каков наилучший способ сопоставить их с QTreeView
а также QTabWidget
таким образом, что если я выберу одну строку в QTableView
(который сопоставлен с адресами или сообщениями), выбранный элемент
QTreeView
представлять «открытый» элемент.Мне удалось открыть новые вкладки, создав два пользовательских QWidgets
один для адресов и один для сообщений. При выборе строки в QTableView
, правильный (либо адреса, либо сообщения) QWidget
создается и подается с моделью SQL и индексом. Затем виджет создает QDataWidgetMapper
и отображает данный индекс. AddressWidget
пример:
AddressWidget::AddressWidget(QSqlRelationalTableModel *model, QModelIndex &index, QWidget *parent) :
QWidget(parent)
{
// ...
// set up widget mapper
mapper = new QDataWidgetMapper(this);
mapper->setModel(this->model);
mapper->addMapping(streetEdit, this->model->fieldIndex("street"));
mapper->addMapping(houseNumberEdit, this->model->fieldIndex("houseNumber"));
mapper->addMapping(zipEdit, this->model->fieldIndex("zip"));
mapper->addMapping(cityEdit, this->model->fieldIndex("city"));
mapper->setCurrentModelIndex(index);
}
Как я могу распространить это на QTreeView
, чтобы дерево отображало открытые элементы? Каждая вкладка в QTabWidget
должен иметь соответствующий пункт в QTreeView
,
Если есть право способ сделать это, пожалуйста, добавьте его или полностью замените мой сценарий.
Задача ещё не решена.
Других решений пока нет …