2011-07-04 8 views
2

私はQPlainTextEditを、行番号も表示するコードエディタに使用します。 しかし、shift+returnを押すと、エディタが中断しますが、行番号は増えません。 QPlainTextEdit - シフト+リターンの動作を変更します。

は、スクリーンショットを見てください、私はそれだけではなく、新しい <p>タグの <br/>だろうHTMLで考える

... ...あなたはおそらく

Have a look at the screenshot

答えて

2

を使用する必要がありますQTextEditはリッチテキストなので、私たちが話している。

virtual void keyPressEvent (QKeyEvent * e)を上書きします。特別な場合を委任する実装ではQTextEdit::keyPressEventに電話することができます。

0

実際には、eventFilter関数とinstallEventFilter関数でobjectを使用できます。

#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 
関連する問題