我正在尝试将QTreeWidget
用于文件浏览器。我想要有单独的选择概念(应用操作的项目)和游标(可用于扩展选择)。与Total Commander中一样:选择红色,移动光标不会影响选择,除非按下Shift键。
有没有任何巧妙的方法来实现QTreeWidget?或者不整洁,但至少工作,不需要手动处理一半事件?
答案 0 :(得分:2)
如果您将窗口小部件的选择模式设置为QAbstractItemView::ExtendedSelection
,则用户将能够使用按下 Ctrl 的箭头键在不更改选择的情况下浏览项目。如果要更改此行为,则应重新实现keyPressEvent
,如下所示:
void MyWidget::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Down ||
event->key() == Qt::Key_Up) {
event->setModifiers(Qt::ControlModifier);
}
QTreeWidget::keyPressEvent(event);
}
现在,当用户按向上或向下键时,当前项目会更改,选择保持不变。我已经测试了这个解决方案。
请注意,默认情况下还有更改选择的pageup,pagedown,home,end(可能是其他)键。您可能还需要处理这些事件。