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()实现换行。