c++ - 如何在 Qt 中覆盖 QApplication::notify

标签 c++ qt exception qtgui qapplication

我试图在我的 Qt 应用程序中处理异常,我浏览了几篇文章,这些文章指出重写 QApplication::notify 方法以在 Qt 中以有效的方式处理异常。我不确定我应该在哪里添加这个覆盖的方法。是 mainwindow.h 还是 main.cpp?我在 MainWindow.h 中添加了以下函数:

bool
notify(QObject * rec, QEvent * ev)
{
  try
  {
    return QApplication::notify(rec,ev);
  }
  catch(Tango::DevFailed & e)
  {
    QMessageBox::warning(0,
                         "error",
                         "error");
  }

  return false;
}

当我构建我的项目时,出现以下错误:

error: cannot call member function 'virtual bool QApplication::notify(QObject*, QEvent*)' without object

我是 c++ 和 Qt 的新手。你能告诉我如何实现它,以便我的所有异常都能以有效的方式处理,并且应用程序不会崩溃。

最佳答案

这是 QApplication 对象的一个​​方法。为了覆盖通知方法,您必须从 QApplication 继承,并且在您的 main() 中,您应该实例化一个类作为 Qt Application

#include <QApplication>
class Application final : public QApplication {
public:
    Application(int& argc, char** argv) : QApplication(argc, argv) {}
    virtual bool notify(QObject *receiver, QEvent *e) override {
         // your code here
    }
};

int main(int argc, char* argv) {
    Application app(argc, argv);
    // Your initialization code
    return app.exec();
}

关于c++ - 如何在 Qt 中覆盖 QApplication::notify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607825/

相关文章:

c++ - C++ 中的 REST 客户端

c++ - 跨 conservativeResize 将 ColXpr 维护为 MatrixXf

c++ - 如何在 C++ 中读取格式化数据?

c++ - 我应该将关键字 `extern` 添加到常量的定义中以在源文件之间共享吗?

c++ - Qt中如何编写Sqlite数据库

c++ - 在编译时检测异常是否被禁用

c++ - 如何从点云获取颜色信息并显示它? -Qt

c++ - 在 C++ 中更改 QML font.pointSize

java - 无法将 IMAPInputStream 转换为 Multipart

java - Class.forName() 和 ClassNotFoundException