C++ QTreeView和QTabWidget仅显示QTableView的选定项

C++ QTreeView和QTabWidget仅显示QTableView的选定项,c++,sql,qt,model-view,C++,Sql,Qt,Model View,给定两个SQLite表地址和消息,将它们映射到QTreeView和QTabWidget的最佳方式是什么?这样,如果我在QTableView中选择一行(映射到地址或消息),则选中的项是 作为新选项卡打开以显示其内容,以及 作为项目插入到QTreeView中,以表示“打开”的项目 我通过创建两个自定义的QWidgets,一个用于地址,一个用于消息,成功地打开了新的选项卡。在QTableView中选择一行时,将创建正确的(地址或消息)QWidget,并使用SQL模型和索引提供。小部件然后创建一个QDa

给定两个SQLite表地址消息,将它们映射到
QTreeView
QTabWidget
的最佳方式是什么?这样,如果我在
QTableView
中选择一行(映射到地址或消息),则选中的项是

  • 作为新选项卡打开以显示其内容,以及
  • 作为项目插入到
    QTreeView
    中,以表示“打开”的项目
  • 我通过创建两个自定义的
    QWidgets
    ,一个用于地址,一个用于消息,成功地打开了新的选项卡。在
    QTableView
    中选择一行时,将创建正确的(地址或消息)
    QWidget
    ,并使用SQL模型和索引提供。小部件然后创建一个
    QDataWidgetMapper
    ,并显示给定的索引<代码>地址小部件示例:

    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
    中都应该有相应的项

    如果有正确的方法,请添加它或完全替换我的场景