我有一段代码处理两个QTreeView,其中项目从左侧树视图添加到右侧树视图。这是代码的一部分:
var keyCodes = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '/', '\\'];
if (keyCodes.find(predicate) === $event.keyCode) {
// do something
}
function predicate(e) {
return e === $event.keyCode;
}
现在过滤一些字符串的设置如下:
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);
这一行是过滤两个树视图的内容,我想要的是过滤选项应该只适用于左侧树视图。 有人可以帮我实现这个吗?
答案 0 :(得分:1)
如果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);