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 に答える