2

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

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

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

任何帮助表示赞赏。

4

1 回答 1

3

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

祝你好运。

于 2012-09-22T22:00:30.020 回答