QPlainTextEdit - 改变shift +返回行为

时间:2011-07-04 11:47:20

标签: qt qt4

我使用QPlainTextEdit代码编辑器也显示行号。 但是当我按shift+return时,编辑器会中断,但行号不会增加。

我认为在html中它只是<br/>而不是新的<p>代码......

看一下截图...

Have a look at the screenshot

2 个答案:

答案 0 :(得分:2)

你可能应该使用QTextEdit,因为这是我们正在讨论的富文本。

覆盖virtual void keyPressEvent ( QKeyEvent * e )。您可以在实施中调用QTextEdit::keyPressEvent来委派非特殊情况。

答案 1 :(得分:0)

实际上,您可以将对象与eventFilter和installEventFilter函数一起使用。

#ifndef SHIFTENTERFILTER_H
#define SHIFTENTERFILTER_H

#include <QObject>
#include <QEvent>
#include <QKeyEvent>

class ShiftEnterFilter : public QObject
{
    protected:
        virtual bool eventFilter(QObject *, QEvent *event) {
            if(event -> type() == QEvent::KeyPress)
            {
                QKeyEvent *keyEvent = static_cast <QKeyEvent> (event);

                if((keyEvent -> modifiers() & Qt::ShiftModifier) && ((keyEvent -> key() == Qt::Key_Enter) || (keyEvent -> key() == Qt::Key_Return)))
                    return true;
            }

            return false;
        }      
    public:
        ShiftEnterFilter(QObject *parent = 0) : QObject(parent) {}
};  

#endif 

只需将此过滤器安装到QPlainTextEdit

即可
// code
ui -> plainTextEdit -> installEventFilter(new ShiftEnterFilter(this));
// code