我试图在我的 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/