将focusOutEvent的函数分配给小部件

Assigning a function for focusOutEvent to a widget

本文关键字:小部 分配 函数 focusOutEvent      更新时间:2023-10-16

在lineedit1上失去焦点后,我想做一些特定的事情。以下是应用程序的代码片段:

QFocusEvent* focuslost = new QFocusEvent(QEvent::FocusOut);
void lineedit1::focusOutEvent(focuslost) {
  //do something
}

但它给了我编译器错误:

错误:后跟"::"的名称必须是类或命名空间名称

我能做些什么来实现这样的功能?

您不能只覆盖对象实例上的方法,您需要创建一个从QLineEdit继承并覆盖方法focusOutEvent:的新类

mylineedit.h

class MyLineEdit : public QLineEdit
{
protected:
    void focusOutEvent(QFocusEvent * e) override;
}

mylineedit.cpp

void MyLineEdit::focusOutEvent(QFocusEvent * e)
{
    // your code here
    QLineEdit::focusOutEvent(e);
}

然后将lineedit1声明为MyLineEdit* lineedit1