Qt實現用快捷鍵實現文本編輯時換行
Qt有兩個文本輸入的類,一個是QLineEdit單行文本輸入;一個是QtextEdit多行文本輸入。 當我們一采用QTextEdit進行文本的編輯,多數的工程情景都要求文本的輸入。這時可以根據項目工程的需要通過封裝一個文本的編輯類來自定義一些文本編輯的屬性。例如你可以自定義一些文本的快捷鍵。 QTextEdit這個類里面它已經有文本換行的快捷鍵,shift+Enter鍵實現文本編輯換行進行編輯,當我們需要定義掐他的的快捷時,則需要我們重寫keyPressEvent或eventFilter事件,重新自定義自己喜歡的換行快捷鍵。 下面的例子就是實現CtrL +Enter鍵進行換行的代碼:
具體代碼如下:
else if((keyMdi & Qt::ControlModifier) || (keyMdi & Qt::ShiftModifier) || (keyMdi & Qt::MetaModifier)){
if(isEdittingText()){
textUndoAdded();
QTextCursor oldCursor = EDText::s_richEdit->textCursor();
QTextCursor textCursor(EDText::s_richEdit->document());
textCursor.setPosition(oldCursor.position());
EDText::s_richEdit->setUndoRedoEnabled(false);
textCursor.insertBlock();
EDText::s_richEdit->setUndoRedoEnabled(true);
return true;
}
}
大概的思路就是判斷是否有CtrL + Enter鍵按下,然后記錄當前光標的位置,在當前光標的位置insertBlock()實現換行。