QPlainTextEdit - изменить смещение + вернуть поведение - PullRequest
2 голосов
/ 04 июля 2011

Я использую QPlainTextEdit для редактора кода, который также показывает номера строк.Но когда я нажимаю shift+return, редактор делает разрыв, но номер строки не увеличивается.

Я думаю, что в html это будет просто <br/> вместо нового тега <p>...

Посмотрите на скриншот ...

Have a look at the screenshot

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Вероятно, вам следует использовать QTextEdit, поскольку речь идет о форматированном тексте.

Переопределить virtual void keyPressEvent ( QKeyEvent * e ). Вы можете вызвать QTextEdit::keyPressEvent в реализации, чтобы делегировать не особые случаи.

0 голосов
/ 24 декабря 2016

Фактически вы можете использовать объект с функцией 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...