C++ 如何禁用QTreeView或模型的筛选选项

C++ 如何禁用QTreeView或模型的筛选选项,c++,qt,C++,Qt,我有一段代码处理两个QTreeView,其中项目从左树状视图添加到右树状视图。以下是代码的一部分: MasterModel *model = new MasterModel; leftProxyFilterModel *leftModel = new leftProxyFilterModel; rightSelectedRowsFiletrModel *rightModel = new rightSelectedRowsFilterModel; QTreeView *leftTreeView;

我有一段代码处理两个QTreeView,其中项目从左树状视图添加到右树状视图。以下是代码的一部分:

MasterModel *model = new MasterModel;
leftProxyFilterModel *leftModel = new leftProxyFilterModel;
rightSelectedRowsFiletrModel *rightModel = new rightSelectedRowsFilterModel;

QTreeView *leftTreeView;
QTreeView *rightTreeView;

leftModel->setSourceModel(model);
rightModel->setSourceModel(leftModel);

leftTreeView->setModel(leftModel);
rightTreeView->setModel(rightModel);
现在,对于过滤,一些字符串设置如下:

leftModel->setFilterWildcard(LineEdit->text());
这一行是过滤两个树视图的内容,我想要的是过滤选项应该只适用于左树视图。
有人能帮我做到这一点吗?

如果
rightModel
的源代码是
leftModel
,那么应用于
leftModel
的任何过滤器也会影响
rightModel

rightModel->setSourceModel(leftModel)
更改为
rightModel->setSourceModel(model)

更新:或者,您可以添加另一层
QSortFilterProxyModel
,这样您的过滤器就不会传播到
rightModel

leftModel->setSourceModel(model);
rightModel->setSourceModel(leftModel);

auto leftFilteredModel = new QSortFilterProxyModel;
leftFilteredModel->setSource(leftModel);
leftFilteredModel->setFilterWildcard(LineEdit->text());

leftTreeView->setModel(leftFilteredModel);
rightTreeView->setModel(rightModel);

我不能这样做,因为rightModel需要的是来自leftModel的数据,而不是model的数据,所以有没有办法用源模型设置的现有方式实现它?恐怕我不明白。在您的代码中,
leftModel
没有自己的数据;它只是“复制”了
模型中的所有内容。此外,
rightModel
“复制”了
leftModel
中的所有内容。如果更新
模型
,则
左模型
(和
右模型
)也将自动更新。你能提供更多关于如何使用两个不同的
QTreeView
s的详细信息吗?你猜第一部分是正确的,即“leftModel”复制“model”中的所有内容,但“rightModel”只复制“leftModel”中选定的项目,而不是整个leftModel。对不起,我错过了。我已经用新的解决方案更新了我的答案。