0

とをオーバーライドするカスタムQTextEdit::mouseMoveEvent(QMouseEvent *e)があります::focusOutEvent(QFocusEvent *e)。QTextEdit のコンテキストは選択可能です。選択モードでは、ユーザーが QTextEdit の境界を超えたときに、::mouseMoveEvent でこれを行うことにより、プログラムで選択を停止したいと考えています。

if(e->pos().y() < 0)
{
    QTextEdit::focusOutEvent(new QFocusEvent(QFocusEvent::FocusOut));
}

ユーザーがマウスを離すと、すぐに focusOutEvent が呼び出されることがわかりました。

問題: プログラムで focusOutEvent を呼び出しても、focusOutEvent がまったく呼び出されません。ユーザーがマウス クリックを離したときにのみ呼び出されます。mouseReleaseEvent でも試しましたが、同じ問題です。

なぜ focusOutEvent が呼び出されないのですか? 何ができるでしょうか?そして、私の問題に対する別の解決策があるとしたら? ありがとうございました!

4

1 に答える 1

0

呼び出す代わりに:

 QTextEdit::focusOutEvent(new QFocusEvent(QFocusEvent::FocusOut));

呼び出してみましたか:

clearFocus ();
于 2015-12-21T10:40:10.950 に答える