在Qt中选择鼠标指针下的Word

时间:2012-09-22 15:51:44

标签: qt

当我在QTextBrowser中按右键时,我需要突出显示鼠标指针下的单词。我已经为 QTextBrowser 实现了 showContextMenu 函数,用于鼠标右键单击。但是我无法突出显示鼠标指针下的单词并将其解压缩。我在网上找到了以下解决方案:

QTextCursor tc = txtBrwsr->textCursor();
tc.select(QTextCursor::WordUnderCursor);
QString word = tc.selectedText();

然而,它不起作用且单词是空的,我的目的是获取单词并突出显示它,即使用户在按下鼠标右键之前没有突出显示该单词

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

textCursor()函数返回QTextCursor的副本。 所有更改后都需要致电setTextCursor()

这是在右键单击后如何在鼠标光标下突出显示单词的示例。

MyTextBrowser.h

class MyTextBrowser : public QTextBrowser {
// ...
protected:
    void mousePressEvent(QMouseEvent *mouseEvent);
// ...
};

MyTextBrowser.cpp

void MyTextBrowser::mousePressEvent(QMouseEvent *mouseEvent) {
    if (Qt::RightButton == mouseEvent->button()) {
        QTextCursor textCursor = cursorForPosition(mouseEvent->pos());
        textCursor.select(QTextCursor::WordUnderCursor);
        setTextCursor(textCursor);
        QString word = textCursor.selectedText();

        qDebug() << word;
    }
    QTextBrowser::mousePressEvent(mouseEvent);
}
祝你好运。