I am trying to handle exception in my Qt application, I went through a couple of posts which indicated of overriding the QApplication::notify method to handle exceptions in a efficient way in Qt. I am not sure where should I add this overriden method. Is it the mainwindow.h or main.cpp? I added the following function in my 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;
}
When I build my project I get the following error:
error: cannot call member function 'virtual bool QApplication::notify(QObject*, QEvent*)' without object
I am new to c++ and Qt.Could you let me know how I could implement this so that all my exceptions would be handled in an efficient way and the application does not crash.
This is a method of a QApplication object. In order to override the notify method you must inherit from
QApplication
and in yourmain()
you should instantiate a class as the Qt ApplicationJust like with other event handlers in Qt, you need to define a child class derived from
QApplication
and implementbool notify (QObject *receiver, QEvent *e)
there, then use your class instead ofQApplication
.That error message is trying to write that you are trying to call a non-static method without an actual object. Only static methods could work like that. Even if it was intended like that, which it is not, it could not be a static method anyway as C++ does not support virtual static methods (sadly, but that is another topic).
Therefore, I would personally do something like this:
main.cpp
main.pro
Build and Run