gpt4 book ai didi

c++ - 选中多个项目时如何清除QListView的选择?

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:45 25 4
gpt4 key购买 nike

我正在开发一个 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.:我在 Release模式下运行它。

最佳答案

使用

void QAbstractItemView::clearSelection() [slot]

清除选择

此外,所有 View 都有一个选择模型,您可以通过以下方式访问:

QItemSelectionModel * QAbstractItemView::selectionModel() const

允许做更多选择

Handling selections in item views

另一件事...

#ifdef QT_NO_DEBUG

表示释放

#ifndef QT_NO_DEBUG

将是 Debug模式,我敢肯定,它不会编译您粘贴的代码

关于c++ - 选中多个项目时如何清除QListView的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com