QTreeView和QTabWidget仅显示QTableViews的选定项目

时间:2014-01-03 03:37:15

标签: c++ sql qt model-view

鉴于两个SQLite表地址消息,以这种方式将它们映射到QTreeViewQTabWidget的最佳方式是什么? ,如果我在QTableView中选择一行(映射到地址或消息),则所选项目为

  1. 作为新标签打开以显示其内容,
  2. 作为项目插入QTreeView以表示“已打开”项目。
  3. 我设法通过创建两个自定义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中包含相应的项目。

    如果有正确的方式,请添加或完全替换我的方案。

0 个答案:

没有答案