更改QListView的多选模式

时间:2011-11-18 20:04:13

标签: qt

在QListView中,我想禁用鼠标拖动多项选择 - 也就是说,mous down on a row,拖动鼠标并在拖动时选择它下面的行。

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

这可能吗?

2 个答案:

答案 0 :(得分:10)

您似乎已将列表视图的选择模式设置为QAbstractItemView :: MultiSelection。尝试使用:

将其设置为QAbstractItemView :: ExtendedSelection
listView->setSelectionMode( QAbstractItemView::ExtendedSelection );

看看是否有帮助。

答案 1 :(得分:3)

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

void DerivedListView::mouseMoveEvent(QMouseEvent *e) {
    if (state() != DragSelectingState)
        QListView::mouseMoveEvent(e);
}