2015-05-20 2 views
0

У меня есть код Qt/cpp и отображается подкласса QLineEdit. При двойном щелчке на QLineEdit, focusInEvent никогда не вызывается (запущен в майя).focusInEvent не вызван в подклассе QLineEdit

void myQLineEditClass::focusInEvent(QFocusEvent *e) 
{ 
    MGlobal::displayInfo(MQtUtil::toMString(QString().sprintf("HERE"))); 
    QLineEdit::focusInEvent(e); 
} 

здесь никогда не отображается, если событие focusInEvent присутствует в .h защитить часть. Любая идея, как получить focusInEvents?

+0

Вы установили политику фокусировки на виджет? – cmannett85

+0

Да, to strongFocus –

+0

Работал отлично для меня. (Не в майя) –

ответ

0

Проблема была связана с тем, что QLineEdit был в QGraphicsView, который был в другом QGraphicsView. Приведение QLineEdit к более высокоуровневому QGraphicsView заставило его работать.

1

Попробуйте нижеследующее. Несколько раз это работало для меня, когда focusInEvent этого не делал.

void YourWidget::changeEvent(QEvent* event) 
{ 
    if (event->type() == QEvent::ActivationChange) 
    { 
     if (isActiveWindow()) 
     { 
      // gaining the focus 
     } 
     else 
     { 
      // loosing the focus 
     } 
    } 

    // or whatever *parent* class call is 
    QWidget::changeEvent(event); 
} 
0

Событие перехватывается виджемом редактора. См. QItemDelegate::createEditor. Вернувшийся виджет получит его.

 Смежные вопросы

  • Нет связанных вопросов^_^