2017-05-26 147 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); 
    } 
}