マルチスレッドQtアプリケーションでnotify
関数を再実装する際に注意すべき点はありますか? これは実装例です。 現在、エラーはありませんが、Qtのマルチスレッドで通知機能を使用する通信用のシグナルスロットを使用しているため、エラーが発生する可能性があります。Q通知と通知の実装
TApplication::notify(QObject *receiver, QEvent *event)
{
bool returnValue(false);
try
{
returnValue = QApplication::notify(receiver, event);
}
catch (IExceptionBase& e)
{
if (!fMain.isNull())
{
//report error to output and file log
}
else
{
//report error to output
}
}
catch (...)
{
if (!fMain.isNull())
{
//report error to output and file log
}
else
{
//report error to output
}
}
return returnValue;
}
fMain
これは安全である、Qt5で機能
ブランケット「catch-all」例外シンクを実装するために、「notify」の再実装が行われました。 'postEvent'はイベントハンドラがその中から実行されないため、何もしません。 –
@KubaOber:Doh。ファンクションシグネチャとコードインデントの欠如は、著者の実際の(対して述べられた)目的に関して私を混乱させました。私は私の答えを修正します。 –