我正在开发一个有 QListView 的 Qt 应用程序。列表中的项目很少。我的应用程序需要根据用户的选择重新排列项目。一切正常,但我面临一个小问题。
当我使用鼠标进行多项选择时,即通过拖动鼠标选择项目时,即使在我进行了一些重新排列操作之后,它也会在 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 区域,你会看到我清除焦点并重新绘制,但没有任何帮助。这个问题的任何解决方案?
PS:我在发布模式下运行它。