QTreeView 禁用悬停在行上的突出显示

QTreeView disable highlighting on a row hover

我不想在鼠标悬停时突出显示行。如何禁用此突出显示?

完全删除突出显示或更改其颜色:两种解决方案都可以。

tView->setStyleSheet("QTreeView::item:hover{background-color:rgb(255,255,255);}");

您可以通过委托方式进行:

#include <QStyledItemDelegate>

class NoHighlightDelegate:public QStyledItemDelegate{
public:
    void initStyleOption(QStyleOptionViewItem*option,const QModelIndex&viewIndex)const override{
        QStyledItemDelegate::initStyleOption(option,viewIndex);
        option->state&=~QStyle::State_MouseOver;}
};

然后将此委托设置为您的 QTreeView:

//QTreeView*view;
auto*delegate=new NoHighlightDelegate();
delegate->setParent(view);
view->setItemDelegate(delegate);

并且不会陷入隐藏选行问题