更改QListView的多选模式

Jas*_*enX 7 qt

在QListView中,我想禁用鼠标拖动多项选择 - 也就是说,在一行中按下鼠标,拖动鼠标并在拖动时选择它下面的行.

我仍然喜欢使用CTRL鼠标点击选择行.

那可能吗?

小智 10

您似乎已将列表视图的选择模式设置为QAbstractItemView :: MultiSelection.尝试将其设置为QAbstractItemView :: ExtendedSelection:

listView->setSelectionMode( QAbstractItemView::ExtendedSelection );
Run Code Online (Sandbox Code Playgroud)

看看是否有帮助.

  • `ExtendedSelection` 是 `MultiSelection` 的超集,因此它也可以通过单击+拖动进行选择。 (2认同)

Wes*_*ker 3

我认为最简单的方法是从 QListView 创建派生类,然后重写其 mouseMoveEvent 函数。QListView 的 Qt 代码中的此函数查找拖动状态并创建一个矩形。我认为这样的东西可能有效,但我没有测试它:

void DerivedListView::mouseMoveEvent(QMouseEvent *e) {
    if (state() != DragSelectingState)
        QListView::mouseMoveEvent(e);
}
Run Code Online (Sandbox Code Playgroud)