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 回答