2015-08-28 65 views
0

我已经开发了一个shell(模拟ubuntu终端 - >只能在当前提示后编辑文本)由PyQt QTextEdit。PyQt QTextEdit文本选择无需移动光标(如ubuntu终端)

事情是当我选择一些文本,光标移动,因为我选择这个文本(所以它从当前命令行消散),我想光标留在它的位置(只有当我选择文本因为我希望它在我以编程方式移动它时通过textEdit.moveCursor(...))移动,同时我正在选择文本。

有没有人有任何想法,我该怎么做?

我现在的解决方案是保存它的任何改变的位置(除非它通过点击改变),当我复制一些文本粘贴它,它会自动粘贴到最后一个位置光标在点击之前。这很好,但对用户来说是“丑陋的”,因为正如我所说的,当他选择文本时,光标将消失在当前行,并且是用户选择文本的地方。不像在Ubuntu终端。

提前致谢!抱歉我的英语。

Adri

回答

0

我没有看到一个简单的解决方案来实现这与文本编辑器API。基本上,终端是黑客。它将只读元素(当前提示符之上的任何内容)与文本编辑器混合在一起。

我的方法是创建两个文本编辑器,使其中一个只读,并显示所有操作的结果。如果你隐藏了两个编辑器的边界,那么它看起来就像一个单一的编辑器。您可能必须将一堆事件(如使用键盘滚动)转发到只读显示器。

+0

感谢您的回答。 您是否认为捕捉mousePressEvent和doubleClickMousePressEvent并手动实现文本选择比您说的更容易? – adriapm

+0

@adriapm绝对不是。尝试在命令附加文本时选择一些文本。如果你没有正确地做,新的文本将出现在鼠标当前所在的位置。 –