2015-08-28 122 views
0

我已經開發了一個shell(模擬ubuntu終端 - >只能在當前提示後編輯文本)由PyQt QTextEdit。PyQt QTextEdit文本選擇無需移動光標(如ubuntu終端)

事情是當我選擇一些文本,光標移動,因爲我選擇這個文本(所以它從當前命令行消散),我想光標留在它的位置(只有當我選擇文本因爲我希望它在我以編程方式移動它時通過textEdit.moveCursor(...))移動,同時我正在選擇文本。

有沒有人有任何想法,我該怎麼做?

我現在的解決方案是保存它的任何改變的位置(除非它通過點擊改變),當我複製一些文本粘貼它,它會自動粘貼到最後一個位置光標在點擊之前。這很好,但對用戶來說是「醜陋的」,因爲正如我所說的,當他選擇文本時,光標將消失在當前行,並且是用戶選擇文本的地方。不像在Ubuntu終端。

提前致謝!抱歉我的英語。

Adri

回答

0

我沒有看到一個簡單的解決方案來實現這與文本編輯器API。基本上,終端是黑客。它將只讀元素(當前提示符之上的任何內容)與文本編輯器混合在一起。

我的方法是創建兩個文本編輯器,使其中一個只讀,並顯示所有操作的結果。如果你隱藏了兩個編輯器的邊界,那麼它看起來就像一個單一的編輯器。您可能必須將一堆事件(如使用鍵盤滾動)轉發到只讀顯示器。

+0

感謝您的回答。 您是否認爲捕捉mousePressEvent和doubleClickMousePressEvent並手動實現文本選擇比您說的更容易? – adriapm

+0

@adriapm絕對不是。嘗試在命令附加文本時選擇一些文本。如果你沒有正確地做,新的文本將出現在鼠標當前所在的位置。 –