在QLineEdit子类中没有调用focusInEvent

时间:2015-05-20 21:13:24

标签: c++ qt focus qtextedit

我有一个Qt / cpp代码并显示一个子类QLineEdit。双击QLineEdit时,永远不会调用focusInEvent(在Maya中启动)。

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

如果.h保护部分中存在focusInEvent,则不会显示此事件。知道如何获得focusInEvents吗?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

该事件被编辑器小部件拦截。见QItemDelegate::createEditor。返回的小部件将获得它。

答案 2 :(得分:0)

问题与QLineEdit位于另一个QGraphicsView中的QGraphicsView中有关。将QLineEdit引入更高级别的QGraphicsView使其工作。