我想在 lineedit1 失去焦点后做一些具体的事情。这是应用程序的代码片段:
QFocusEvent* focuslost = new QFocusEvent(QEvent::FocusOut);
void lineedit1::focusOutEvent(focuslost) {
//do something
}
但它给了我编译器错误:
error: name followed by "::" must be a class or namespace name
我该怎么做才能实现这样的功能?
最佳答案
你不能只覆盖一个对象实例的方法,你需要创建一个继承自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
关于c++ - 将 focusOutEvent 的函数分配给小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743189/