在我的Qt 5.6.2项目中,我注意到如果你双击QTreeView
项目(实际的箭头部分,而不是项目文本),第一次点击切换扩展状态,第二次点击确实什么都没有。
我希望再次点击再次切换展开状态。
我尝试treeView->setExpandsOnDoubleClick(false);
但行为仍然相同,因为它似乎根本不影响项目的箭头部分。看起来Qt正在决定箭头对双击的反应,无论属性expandsOnDoubleClick
如何。我该如何解决这个问题?
(注意:Qt 5.0.2中不存在此行为。不确定中间Qt版本。)
答案 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);
}
}