2017-03-08 4 views

答えて

2

にこの
感謝をチェックするために開始する方法がわかりませんQPlainTextEditから継承するクラスで、event()メソッドを再実装し、マウストラッキングを有効にします

plaintextedit.h

#ifndef PLAINTEXTEDIT_H 
#define PLAINTEXTEDIT_H 

#include <QPlainTextEdit> 

class PlainTextEdit : public QPlainTextEdit 
{ 
public: 
    PlainTextEdit(QWidget *parent=0); 

    bool event(QEvent *event); 
}; 

#endif // PLAINTEXTEDIT_H 

plaintextedit.cpp

#include "plaintextedit.h" 
#include <QToolTip> 


PlainTextEdit::PlainTextEdit(QWidget *parent):QPlainTextEdit(parent) 
{ 
    setMouseTracking(true); 
} 

bool PlainTextEdit::event(QEvent *event) 
{ 
    if (event->type() == QEvent::ToolTip) 
    { 
     QHelpEvent* helpEvent = static_cast<QHelpEvent*>(event); 
     QTextCursor cursor = cursorForPosition(helpEvent->pos()); 
     cursor.select(QTextCursor::WordUnderCursor); 
     if (!cursor.selectedText().isEmpty()) 
      QToolTip::showText(helpEvent->globalPos(), /*your text*/QString("%1 %2").arg(cursor.selectedText()).arg(cursor.selectedText().length())); 

     else 
      QToolTip::hideText(); 
     return true; 
    } 
    return QPlainTextEdit::event(event); 
} 

setMouseTracking()番目の完全なコード:Here

+0

はこれは本当に便利な答えてくれてありがとうしかしにどのような方法があります単語を強調表示するだけを選択しますか?任意のオプションがある場合はcursor.select(QTextCursor :: Highlight);またはそのようなもの –

関連する問題