我正在开发一个 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 区域,您会看到我清除焦点并重新绘制,但没有任何帮助我。这个问题有什么解决办法吗?
P.S.:我正在发布模式下运行它。
Use
void QAbstractItemView::clearSelection() [slot]
清除选择
此外,所有视图都有一个选择模型,您可以通过以下方式访问:
QItemSelectionModel * QAbstractItemView::selectionModel() const
这允许做更多的事情选择
Look at 处理项目视图中的选择
另一件事 ...
#ifdef QT_NO_DEBUG
意味着释放
#ifndef QT_NO_DEBUG
将是调试模式,我确定,它不会编译您粘贴的代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)