我有选择模式的QTreeView:SingleSelection(selection modes)。
我想删除所选项目。然后调用rowsAboutToBeRemoved()
函数,并按comment:// Ensure one selected item in single selection mode
中的指定自动选择相邻项。
如何避免选择更改?
答案 0 :(得分:1)
假设:
QTreeView view;
我们可以访问QItemSelectionModel
实例并暂时禁用信号:
QItemSelectionModel *selectModel = view.selectionModel();
selectModel->blockSignals(true);
//set the selection
selectModel->blockSignals(false);
快速点击来源显示Qt将QItemSelectionModel::currentChanged()
信号连接到视图的currentChanged()
广告位,这似乎是您遇到问题的根源。
答案 1 :(得分:1)
大声思考:
QTreeView view;
...
QItemSelection Modem *selectModel = view.selectionModel();
disconnect(selectModel, &QItemSelectionModel::currentChanged,0, 0);
这真的很重,但只要QTreeView受到你的严格控制,它就值得一试。
我认为另一种方法是推出自己的模型实现,以便在创建时控制连接。
(注意:感谢@Jon Harper,以便我可以复制/粘贴源。;))