双击QTreeView展开项目箭头

时间:2017-05-26 08:55:31

标签: c++ qt qtreeview

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我能够通过继承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);
    }
}