2011-12-08 94 views
1

我有一個QTreeWidget,我想雙擊它打開一個特定的事物,然後單擊開始重命名該項目,但我不希望雙擊時發生這兩個操作。現在,當我雙擊我的樹項目,我得到我的東西加載和物品進入重命名狀態。QTreeWidget選擇單擊版本並雙擊

我用下面的語句來設置我的QTreeWidget:

this->setEditTriggers(
    QAbstractItemView::EditKeyPressed 
    | QAbstractItemView::SelectedClicked 
); 
connect(
    this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), 
    this, SLOT(OnMouseDoubleClicked(QTreeWidgetItem*, int)) 
); 

是否有一些具體的事情我可以做,以防止項目在重命名/編輯狀態得到,當我雙擊它,因爲只有我希望我的自定義加載操作發生,但是當我單擊樹中的一個元素時仍然保持就地編輯?

+1

對不起,但我認爲你的做法是錯誤的。按設計雙擊應該是一次點擊的延伸。例如:單擊 - 選擇,雙擊 - 打開或重命名。有兩個原因:第一 - 不要混淆用戶。其次 - 更容易實施。我認爲你應該重新思考你的邏輯。 – firescreamer

+1

[此問題]可能的重複(http://stackoverflow.com/questions/4627347/distinguish-between-single-and-double-click-events-in-qt) – azf

+1

起初我沒有這個 - > setExpandsOnDoubleClick(false);驗證後,它似乎工作。如果有人有更好的方法建議,仍然會讓問題開放。 @HostileFork:感謝編輯問題。 –

回答

1

其實如果添加

this->setExpandsOnDoubleClick(false); 

它修復了兩個問題的同時,第一,當你在任何項目上雙擊,帶小孩的項目沒有得到自動展開,這正是我們想要的,最重要的是,該項目沒有進入就地更名/編輯狀態。