C++ (Qt)class MyApplication : public QApplication{ Q_OBJECT public: bool IsError; public: MyApplication (int& argc, char** argv) : QApplication(argc, argv) {MyGlobalError = false;} bool notify ( QObject * receiver, QEvent * event);}; int main(int argc, char *argv[]) {//...//... MyApplication a(argc, argv);//...//... return a.exec();} bool MyApplication::notify ( QObject * receiver, QEvent * event ) { bool Res = QApplication::notify(receiver, event); if(IsError) { IsError= false; QMessageBox::information(0, QObject::tr("information"), "Error"); } return Res;}
C++ (Qt)// один из обработчиков...if (theErrorHandler.GetError() != errNone) // ошибка уже случилась, уходим return theErrorHandler.GetError();...int err = MyLibCal(..); // работаем с библиотеками и.т.п.if (err != errNone) // проверяем на ошибку return theErrorHandler.SetError(err); // устанавливаем ошибку и уходим... // ErrorHandlerint ErrorHandler::GetError( void ) const{ return mErrorCode; } int ErrorHandler::SetError( int errCode ){ static QMutex mutex; QMutexLocker(&mutex); if (mErrorCode == noErr) { mErrorCode = errCode; emit ShowError(this); // QueuedConnection }} ErrorHandler theErrorHandler; // глобальная переменная
connect( button, SIGNAL( clicked() ), obj1, SLOT( slot() ) );connect( button, SIGNAL( clicked() ), obj2, SLOT( slot() ) );