鉴于两个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
中包含相应的项目。
如果有正确的方式,请添加或完全替换我的方案。