2009-09-02 24 views
1

我正在Red Hat Linux上開發Qt應用程序。我想要在QComboBox中捕獲回車鍵按下事件。在QComboBox中捕獲文本更改事件

我已將一個插槽連接到信號editTextChanged(),該信號針對每個按鍵發出,但不包含回車鍵
爲什麼這樣?有沒有其他方法可以檢測回車返回

回答

4

我假設你寫了一個插槽並將其連接到QComboBox::editTextChanged()信號。
此信號在文本更改時觸發,並且輸入不會更改文本,它會接受它。如果您想要拍攝回車,可以採用多種方法。

  1. 子類QComboBox
    覆寫keyPressEvent():首先撥打QComboBox::keyPressEvent(),然後檢查按鍵是否爲輸入。如果是,發出一個信號。
    只要你需要使用這個子類。如果您不知道如何在QDesigner中搜索關於推廣小部件的信息。

  2. 實現一個繼承QObject的新類。在這個類中,覆蓋eventFilter():檢查事件是否是按鍵。如果是,請檢查它是否爲輸入鍵。如果是,發出一個信號。
    然後,創建此類的實例並將其設置爲您的QComboBox的事件過濾器。將一個插槽連接到您實施的此實例的信號。

如果這些都不清楚,我建議您閱讀以下網頁:

Using Custom Widgets with Qt designer

Qt Events & Event Filters

3

你也可以看着activated(const QString&)信號。當用戶輸入時可能會發射它。

+0

這正是我所需要的。當用戶改變選擇時,令人沮喪的editTextChanged()會在其他信號之前被調用,所以沒有辦法知道/爲什麼/文本已經改變。如果我在editTextChanged()之前獲得了激活的()或currentIndexChanged()信號,那麼我可以做一些不同的事情......唉。 – 2010-01-19 21:47:59