gpt4 book ai didi

qt - 是否可以通过单击项目在 QTreeView 中取消选择?

转载 作者:行者123 更新时间:2023-12-03 21:04:51 27 4
gpt4 key购买 nike

我希望能够通过单击没有项目的 QTreeView 的一部分来取消选择 QTreeView 中的项目,但我似乎无法找到这样做的方法。我会拦截不在项目上的点击,但 QTreeView 没有 clicked信号,所以我不知道如何做到这一点。

最佳答案

基于@Eric 的解决方案,并且因为它仅在单击的项目被选中时才取消选择,这就是我想出的。
当您单击 QTreeView 的空白区域时,此解决方案也有效

#ifndef DESELECTABLETREEVIEW_H
#define DESELECTABLETREEVIEW_H
#include "QTreeView"
#include "QMouseEvent"
#include "QDebug"
class DeselectableTreeView : public QTreeView
{
public:
DeselectableTreeView(QWidget *parent) : QTreeView(parent) {}
virtual ~DeselectableTreeView() {}

private:
virtual void mousePressEvent(QMouseEvent *event)
{
QModelIndex item = indexAt(event->pos());
bool selected = selectionModel()->isSelected(indexAt(event->pos()));
QTreeView::mousePressEvent(event);
if ((item.row() == -1 && item.column() == -1) || selected)
{
clearSelection();
const QModelIndex index;
selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select);
}
}
};
#endif // DESELECTABLETREEVIEW_H

亚西尔

关于qt - 是否可以通过单击项目在 QTreeView 中取消选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761284/

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