2014-10-04 53 views
0

我正在用QPlainTextEdit構建代碼編輯器。默認情況下,當我在一行中鍵入一串單詞然後按撤消時,整行將被刪除。我想推動在每個字符上手動撤消堆棧,以便當我單擊撤消時,刪除前一個字符。然後,我可以實現僅捕獲非字母等等,所以它一次會撤銷一個邏輯令牌。我該怎麼做?QPlainTextEdit - 手動推入撤消堆棧

我希望你們能幫助我。提前致謝。

+0

例如,你會糊1000個字符,並且你想在1000撤消此?也許你應該只提供一個快捷方式或按鈕來刪除最後一個字符,或者做一些「聰明的」刪除操作,而不是銷燬所有的撤消堆棧,並按照你的意願填寫單個字符。 – Chernobyl 2014-10-04 10:52:54

+0

現在,如果您可以告訴我如何推動在每個鍵入的空間上撤消堆棧,它會幫助我。然後,我會找出其餘的。 – LogicStuff 2014-10-04 11:58:05

回答

0

我已經通過重寫keyPressEvent()得到這個工作:

void CodeEditor::keyPressEvent(QKeyEvent *event) 
{ 
    QTextCursor cursor = textCursor(); 
    cursor.beginEditBlock(); 
    QPlainTextEdit::keyPressEvent(event); 
    cursor.endEditBlock(); 
    setTextCursor(cursor); 
}