как создать всплывающую подсказку для выделенных строк в QplainTextEdit QT

У меня есть QPlainTextEdit, и теперь в нем выделены некоторые слова. Я хочу, чтобы при наведении на него курсора мыши отображалась всплывающая подсказка с описанием или чем-то подобным об этом выделенном слове, что-то вроде этого в QT IDE.
введите описание изображения здесь

но я не знаю, как начать это, так что любая идея, код или подобный проект, чтобы проверить это
заранее спасибо

1

Решение

Для этого случая я создам класс, который наследуется от QPlainTextEdit, переопределив event() метод и включить отслеживание мыши с 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);
}

Полный код: Вот

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]