如何在选择多个项目时清除QListView的选择
How to clear the selection of QListView when multiple items are selected?
我正在开发一个Qt应用程序,其中有一个QListView。列表中的项目很少。我的应用程序要求根据用户的选择重新排列项目。一切都很好,但我面临一个小问题。
当我使用鼠标进行多项选择时,即通过拖动鼠标选择项目,即使在我进行了一些重新排列操作后,它也会在QlistView上留下选择标记。我确信这与清除选择有关。我试着使用repaint()或clearFocus(),但似乎什么都不起作用。
例如,当我们选择一组文件夹时,我们拖动鼠标,这个实习生会给我们一个矩形框,它覆盖了它下面的所有项目。这个特定的矩形框会留在我的QListView中。选择项目后,我不想要它。
我有一个mousemoveevent,我在里面做它:
void BinListView::mouseMoveEvent (QMouseEvent *event) {
if (NULL == event) {
return;
} else {
if (Qt::LeftButton & event->buttons ()) {
int nDis = (event->pos () - m_posStart).manhattanLength ();
if (nDis >= QApplication::startDragDistance ()) {
startDrag (m_posStart);
}
}
#ifdef QT_NO_DEBUG
QListView::mouseMoveEvent (event);
QListView::repaint();
QListView::clearFocus();
#endif
}
repaint();
}
如果你注意到QT_NO_DEBUG区域,你会看到我清除焦点并重新喷漆,但没有任何帮助。这个问题的解决方案是什么?
附言:我正在以释放模式运行它。
使用
void QAbstractItemView::clearSelection() [slot]
清除选择
此外,所有视图都有一个选择模型,您可以通过以下方式访问:
QItemSelectionModel * QAbstractItemView::selectionModel() const
这允许选择做更多的事情
查看项目视图中的处理选择
另一件事。。。
#ifdef QT_NO_DEBUG
意味着释放
#ifndef QT_NO_DEBUG
将是调试模式,我确信,它不会编译您粘贴的
使用QAbstractItemView::clearSelection函数。
如果您已经将QListView
子类化,则可以使用clearSelection();
来调用它
相关文章:
- 如何使用默认参数等选择模板专业化
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- QTreeView幻灯片多选后无法使用单击选择
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 在C++中,如何通过几种类型从元组中选择多个元素
- 清除前检查矢量
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 对可变参数使用声明.如何选择正确的功能
- 选择选举获胜者的程序
- 如何选择在 csv 文件中输出的位置
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- ifstream文件在从行中读取时被清除
- QTreeWidgetItem 设置不可选择将清除选择
- 无法清除 QLineEdit 从 QCompleter 中选择项目
- 如何正确清除Qml ListView选择
- 如何清除wxListBox中的所有选择(使用wxLB_MULTIPLE)
- 如何在选择多个项目时清除QListView的选择