我正在寻找一种方式来改变QTextCharFormat一个的QTextEdit的QTextBlock不触发除了撤销命令。让我解释:
所述QTextCharFormat的QTextBlock可以通过使用容易地改变QTextCursor::setBlockCharFormat()方法。假设我们有一个QTextEdit被调用的对象,myTextEdit它的可见光标在我们要更改的文本块内,我们可以QTextCharFormat像这样更改文本块:
text_cursor = myTextEdit.textCursor()
text_cursor.setBlockCharFormat(someNewCharFormat)
Run Code Online (Sandbox Code Playgroud)
上面的代码可以正常工作,但是还会向myTextEdit撤消堆栈中添加撤消命令。对于我自己而言,我希望能够改变QTextCharFormat的QTextBlock 不添加撤销命令到QTextEdit的撤消堆栈。
我考虑使用该QTextDocument::setUndoRedoEnabled()方法暂时禁用撤消/重做系统,但是该方法也清除了撤消堆栈,我不想这样做。我还寻找了其他方法来更改撤消/重做系统的行为,但是我还没有找到一种方法来使其暂时忽略更改。我只是想在QTextEdit没有撤消/重做系统注册更改的情况下对a 进行更改。
任何提示或建议,不胜感激。谢谢!
对于Haskell和一般的编程人员来说,我是一个新手,我想将Haskell用于我考虑的项目。我主要担心的是用Haskell编写跨平台程序会有多困难。理想情况下,我希望最终产品能够正常运行,并且易于在大多数Windows,Mac和Linux计算机上安装。
我还没有编写任何Java,但是据我了解,Java的主要优势之一是您可以“编写一次,在任何地方运行”。由于我还没有听说过有关Haskell的说法,因此我认为编写跨平台Haskell程序要比编写跨平台Java程序花费更多的工作。
我的问题是,我们在谈论多少工作?如果我希望我的程序在大多数Windows,Mac和Linux机器上都可以运行,那么如果我选择使用Haskell而不是Java这样的JIT编译语言,将会给我带来多大的麻烦?
作为后续问题:
我第一个问题的答案通常可以在多大程度上适用于所有非JIT编译语言?在Haskell中创建跨平台软件的挑战与在任何其他编译语言中进行的挑战大致相同吗?Haskell在这方面有多独特?
谢谢!