双击 QTreeView 展开项目箭头

Double Click on QTreeView Expand Item Arrow

在我的 Qt 5.6.2 项目中,我注意到如果您双击 QTreeView 项目(实际的箭头部分,而不是项目文本),第一次点击切换展开状态,第二次点击点击什么都不做。

我希望第二次点击再次切换展开状态。

我试过 treeView->setExpandsOnDoubleClick(false); 但行为仍然相同,因为它似乎根本不影响项目的箭头部分。看起来 Qt 正在为我决定箭头应该如何对双击做出反应,而不管 属性 expandsOnDoubleClick。我该如何解决?

(注意:此行为在 Qt 5.0.2 中不存在。不确定 Qt 中间版本。)

我能够通过子类化 QProxyStyle 并检查样式提示 SH_ListViewExpand_SelectMouseType 并返回值 3 而不是默认值 2 来解决这个问题。

class MyProxyStyle : public QProxyStyle
{
public:
    int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const
    {
        if(hint == QStyle::SH_ListViewExpand_SelectMouseType)
            return 3;
        return QProxyStyle::styleHint(hint, option, widget, returnData);
    }
}