将focusOutEvent的函数分配给窗口小部件

时间:2013-07-19 09:54:47

标签: c++ qt

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

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

但它给了我编译器错误:

  
    

错误:名称后跟“::”必须是类或命名空间名称

  

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

1 个答案:

答案 0 :(得分:1)

您不能只是覆盖对象实例上的方法,您需要创建一个继承自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