2017-03-08 2 views
0

Ich habe ein QPlainTextEdit und habe einige Wörter in es jetzt markiert Ich möchte, wenn ich mit der Maus darüber zeigen, zeigen Sie mir eine QuickInfo, die Beschreibung oder etwas über diese hervorgehoben hat Wort so etwas wie dies in QT IDE
enter image description here
aber ich weiß nicht, wie dies zu starten, so eine Idee, Code oder ähnliches Projekt dieses
Dank inWie man Tooltip für markierte Zeichenfolgen in QplainTextEdit QT

Antwort

2

ich schaffen eine für diesen Fall Voraus zu überprüfen Klasse, die von QPlainTextEdit erbt, implementieren Sie die Methode neu und aktivieren Sie die Mausverfolgung wi th setMouseTracking()

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); 
} 

komplette Code: Here

+0

Vielen Dank für diese wirklich hilfreiche Antwort aber ist es eine Möglichkeit, Markieren Sie einfach Wort markieren? wenn es eine Option gibt cursor.select (QTextCursor :: Highlight); oder etwas ähnliches –

Verwandte Themen