2017-05-26 117 views
0

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

我反而像第二次点击再次切换展开状态。

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

(注意:这种行为并没有存在的Qt 5.0.2不确定大约中间的Qt版本)

+0

http://sscce.org/ –

+0

老实说,如果你需要一个SSCCE一个简单的QTreeView则,那么很有可能,你将无法提供帮助。这只是任何旧的QTreeView。 – mrg95

+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); 
    } 
}