c++ - 将 focusOutEvent 的函数分配给小部件

标签 c++ qt

我想在 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/

相关文章:

c++ - 为什么我不能从基类槽 Qt 调用虚函数

C++字符串输出笑脸

用于 win32 或 C++ 的 C#

c++ - 如何在 Visual Studio C++ 中检查函数运行时间?

qt - 我应该如何解决 Qt 中的这个线程问题?

c++ - QX11EmbedContainer 和 QProcess 问题

qt - 如何反转 QList?

c++ - 由于使用静态变量导致的 undefined reference 错误

c++ - 在 C++ 模板编程中遇到麻烦

c++ - Qt C++ 最小化和最大化窗口