djidara696
djidara696

Reputation: 35

QTextEdit: get word under the mouse pointer

I made this CompileOutput class, and basically what I want is when I click the word, it emits signal selectedWord, and when I hover over words, I want it to emit signal hoveredWord.

The mousePressEvent works, but enterEvent wont work. When I hover over words, nothing happens.

This is my chunk of code:

CompileOutput::CompileOutput(QWidget *parent): QTextEdit(parent)
{
    setReadOnly(true);
}
CompileOutput::~CompileOutput()
{
}

void CompileOutput::mousePressEvent(QMouseEvent * event)
{
    QTextCursor tc = cursorForPosition ( event->pos());
    tc.select(QTextCursor::LineUnderCursor);
    QString strWord = tc.selectedText();

    if(!strWord.isEmpty())
    {

        emit selectedWord(strWord);
    }
}

void CompileOutput::enterEvent(QMouseEvent *event)
{
    QTextCursor tc = cursorForPosition(event->pos());
    tc.select(QTextCursor::LineUnderCursor);
    QString strWord = tc.selectedText();

    qDebug() << strWord;
    if(strWord=="the line i need.")
    {
        emit hoveredWord(); //this signal makes cursor shape change while over right line of text
    }

}

Upvotes: 3

Views: 1804

Answers (1)

finmor
finmor

Reputation: 451

Try this:

In the constructor add

setMouseTracking(true);

and then use mouseMoveEvent instead of enterEvent

Upvotes: 4

Related Questions