2015-12-21 3 views
0

У меня есть обычай QTextEdit, который переопределяет ::mouseMoveEvent(QMouseEvent *e) и ::focusOutEvent(QFocusEvent *e). Контекст QTextEdit можно выбрать. В режиме выбора, когда пользователь превышает границы QTextEdit в Я хочу остановить выбор программно, делая это в :: mouseMoveEvent:QTextEdit focusOut программно не работает

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

Я понял, что, когда пользователь отпускает кнопку мыши, focusOutEvent вызывается немедленно.

Проблема: Несмотря на то, что я вызываю focusOutEvent программно, focusOutEvent не вызывается вообще. Он вызывается только тогда, когда пользователь отпускает щелчок мыши. Я попытался также с mouseReleaseEvent, но это та же проблема.

Почему focusOutEvent не называется? Что может быть сделано? И если есть другое решение моей проблемы? Спасибо!

ответ

0

Вместо вызова:

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

ли Вы пробовали вызова:

clearFocus();