focusInEvent 未在 QLineEdit 子类中调用

focusInEvent not called in QLineEdit subclass

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

void myQLineEditClass::focusInEvent(QFocusEvent *e)
{
    MGlobal::displayInfo(MQtUtil::toMString(QString().sprintf("HERE")));
    QLineEdit::focusInEvent(e);
}
如果 .h 保护部分中存在 focusInEvent,则永远不会显示

HERE。知道如何获得 focusInEvents 吗?

试试下面的方法。在 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);
}

事件被编辑器小部件拦截。参见 QItemDelegate::createEditor。那里返回的小部件将得到它。

问题与 QLineEdit 位于 QGraphicsView 中的事实有关,而该 QGraphicsView 位于另一个 QGraphicsView 中。将 QLineEdit 带到更高级别的 QGraphicsView 使其工作。