5

カーソルの下のテキストを取得するにはどうすればよいですか? カーソルを合わせて「こんにちは」という単語が表示された場合、それを読むことができますか? 私は QTextCursor.WordUnderCursor で何かをする必要があると思いますが、実際には何がわかりません。何か助けはありますか?

これは私が今取り組んでいるものです:

    textCursor = text.cursorForPosition(event.pos());
    textCursor.select(QTextCursor.WordUnderCursor);
    text.setTextCursor(textCursor);
    word = textCursor.selectedText();

テキストが見えるように、今すぐテキストを選択しています。

編集2:

私が実際にやろうとしているのは、テキスト内の特定の単語にツールチップを表示することです。

4

1 に答える 1

8

残念ながら、現時点ではこれをテストすることはできないため、これは何が必要かについての最良の推測です。これは、入力時にツールチップにエラーを表示するテキストフィールドを持つ、私が書いたいくつかのコードに基づいていますが、動作するはずです。

ホバー オーバーの下にある単語を選択するためのコードは既に用意されています。あとは、適切な場所にツールヒントが必要なだけです。

textCursor = text.cursorForPosition(event.pos())
textCursor.select(QTextCursor.WordUnderCursor)
text.setTextCursor(textCursor)
word = textCursor.selectedText()

if meetsSomeCondition(word):
    toolTipText = toolTipFromWord(word)
    # Put the hover over in an easy to read spot
    pos = text.cursorRect(text.textCursor()).bottomRight()
    # The pos could also be set to event.pos() if you want it directly under the mouse
    pos = text.mapToGlobal(pos)
    QtGui.QToolTip.showText(pos,toolTipText)

あなたはそれらについて説明meetsSomeCondition()toolTipFromWord()ていないので、記入するのはあなた次第ですが、そこに何が必要かについてはかなり説明されています。

単語を選択せず​​に行うことについてのコメントについては、これを行う最も簡単な方法は、新しいカーソルを選択する前にカーソルをキャッシュしてから元に戻すことです。これを行うには、呼び出しQTextEdit.textCursor()てから、以前と同じように設定します。

そのようです:

oldCur = text.textCursor()
textCursor.select(QTextCursor.WordUnderCursor) # line from above
text.setTextCursor(textCursor)                 # line from above
word = textCursor.selectedText()               # line from above
text.setTextCursor(oldCur)

# if condition as above
于 2013-10-08T00:35:35.937 に答える