2017-07-06 53 views
0

我在屏幕上有一個QTextEdit,裏面有文字。我希望能夠輸入搜索字符串,並將光標移動到QTextEdit中的該字符串的下一個出現位置 - 但實際上沒有進入文本編輯。如果QTextEdit有焦點,我鍵入的東西進入它,如果它沒有焦點,那麼沒有光標。任何人都可以幫忙嗎?在QTextEdit中輸入時搜索字符串

+0

您可以使用QCompleter在任何Qt窗口小部件中提供自動完成功能,例如QLineEdit和QComboBox – saeed

+0

搜索沒有問題 - 工作正常。我只需要能夠顯示TextEdit光標,而無需在鍵盤上輸入文字。 – Hooder

+0

顯示光標或更改光標位置? – saeed

回答

0

你有兩種可能性:

  1. 重新實現QTextEdit::keyPressEvent捕捉輸入的文本而不顯示。作爲替代方案,您可以使用event filter,其優點是您無需繼承QTextEdit

  • 創建(小)搜索框控件(例如:QLineEditQTextEdit的頂部),你給焦點,而不是你的主要QTextEdit的。這樣,當前的搜索字符串被反饋給用戶。
  • 請注意,我更喜歡第二個選項,因爲有視覺反饋。

    +0

    啊哈。對。謝謝:)可能1.我試過2.但它沒有做我想要的。 – Hooder

    +0

    我已閱讀事件過濾器文檔,但它非常複雜 - 我是一個真正的noob與此。我只是不明白這一點。有關如何設置此類過濾器的任何建議? – Hooder

    +0

    此[post](https://stackoverflow.com/questions/44394284/detect-if-the-mouse-is-clicked-outside-groupbox/44408622#44408622)或您最喜愛的搜索引擎可能會有所幫助。基本上,你應該調用'textEdit-> installEventFilter(myClass)'並實現'MyClass :: eventFilter'來處理捕獲的事件。 – m7913d