QListView改变MultiSelection选择模式的行为
Qt: QListView change behaviour of MultiSelection selection mode
我有QListView与多选选项选择项目。
listView->setSelectionMode(MultiSelection);
这正是我想要的,除了一点。我不想在拖拽选择时取消选择(当我拖拽选中的项目时,它们变得未选中)。我想要拖动选择下面的项目总是被选中。
有办法改变这种行为吗?
更新:启用了换行,因此项被绘制成几行。
要改变QListView的选择行为,你应该重新实现QAbstractItemView::selectionCommand
函数。下面是一个例子:
mylistwidget.h
#ifndef MYLISTWIDGET_H
#define MYLISTWIDGET_H
#include <QListWidget>
#include <QItemSelectionModel>
class MyListWidget : public QListWidget
{
Q_OBJECT
public:
explicit MyListWidget(QWidget *parent = 0);
protected:
virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index,
const QEvent *event = 0) const;
};
#endif // MYLISTWIDGET_H
mylistwidget.cpp
MyListWidget::MyListWidget(QWidget *parent) :
QListWidget(parent)
{
}
QItemSelectionModel::SelectionFlags MyListWidget::selectionCommand(const QModelIndex & index, const QEvent * event) const
{
QItemSelectionModel::SelectionFlags flags = QAbstractItemView::selectionCommand(index, event);
if (event->type() == QEvent::MouseMove)
{
flags &= ~QItemSelectionModel::Toggle;
flags |= QItemSelectionModel::Select;
}
return flags;
}
相关文章:
- 如何使用默认参数等选择模板专业化
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- 为什么在保护模式下继承升级不起作用
- QTreeView幻灯片多选后无法使用单击选择
- 如何在全屏模式下(在OpenGL中)使背景透明
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- C++,有选择地应用模板模式来发挥作用
- Windows Console API鼠标事件只是进入选择模式
- 为什么CRTP(奇怪的递归模板模式)试图选择另一个私有基类的另一个同名函数
- 设计模式选择
- OpenGL选择模式
- 在做一次选择(GL_SELECT模式)后,一半Fps (OpenGL)
- QListView改变MultiSelection选择模式的行为
- vector insert中重载模板函数选择(模式匹配)是如何工作的