我正在Red Hat Linux上開發Qt應用程序。我想要在QComboBox
中捕獲回車鍵按下事件。在QComboBox中捕獲文本更改事件
我已將一個插槽連接到信號editTextChanged()
,該信號針對每個按鍵發出,但不包含回車鍵。
爲什麼這樣?有沒有其他方法可以檢測回車返回?
我正在Red Hat Linux上開發Qt應用程序。我想要在QComboBox
中捕獲回車鍵按下事件。在QComboBox中捕獲文本更改事件
我已將一個插槽連接到信號editTextChanged()
,該信號針對每個按鍵發出,但不包含回車鍵。
爲什麼這樣?有沒有其他方法可以檢測回車返回?
我假設你寫了一個插槽並將其連接到QComboBox::editTextChanged()
信號。
此信號在文本更改時觸發,並且輸入不會更改文本,它會接受它。如果您想要拍攝回車,可以採用多種方法。
子類QComboBox
。
覆寫keyPressEvent()
:首先撥打QComboBox::keyPressEvent()
,然後檢查按鍵是否爲輸入。如果是,發出一個信號。
只要你需要使用這個子類。如果您不知道如何在QDesigner中搜索關於推廣小部件的信息。
實現一個繼承QObject
的新類。在這個類中,覆蓋eventFilter()
:檢查事件是否是按鍵。如果是,請檢查它是否爲輸入鍵。如果是,發出一個信號。
然後,創建此類的實例並將其設置爲您的QComboBox
的事件過濾器。將一個插槽連接到您實施的此實例的信號。
如果這些都不清楚,我建議您閱讀以下網頁:
你也可以看着activated(const QString&)
信號。當用戶輸入時可能會發射它。
這正是我所需要的。當用戶改變選擇時,令人沮喪的editTextChanged()會在其他信號之前被調用,所以沒有辦法知道/爲什麼/文本已經改變。如果我在editTextChanged()之前獲得了激活的()或currentIndexChanged()信號,那麼我可以做一些不同的事情......唉。 – 2010-01-19 21:47:59