1
void MyGlWidget::initializeGL() {
try {
throw std::exception();
} catch(...) {
QMessageBox::critical(this, tr("Exception"),
tr("Exception occured"));
}
}
もう一回initializeGLを呼び出します)メッセージボックスが、私はブール値を経由してこの問題を回避しようとして示されており、実行は(initializeGLに入る)、再び、第二のメッセージボックスQMessageBox(キャッチで
を示しています変数:
void MyGlWidget::initializeGL() {
if(in_initializeGL_)
return;
in_initializeGL_ = true;
try {
throw std::exception();
} catch(...) {
QMessageBox::critical(this, tr("Exception"),
tr("Exception occured"));
}
in_initializeGL_ = false;
}
しかし、これはクラッシュします。だから私はpaintGLでエラーを表示することを決定した()(それはまた、2つのメッセージボックスを表示):
void MyGlWidget::paintGL() {
if(in_paintGL_)
return;
in_paintGL_ = true;
if (!exception_msg_.isEmpty()) {
QMessageBox::critical(this, tr("Exception"),
exception_msg_);
exception_msg_.clear();
}
// rendering stuff
in_paintGL_ = false;
}
void MyGlWidget::initializeGL() {
try {
throw std::exception();
} catch(...) {
exception_msg_ = "Exception in initializeGL()";
}
}
は、これは問題ではなく醜いコードを解決します。この問題のより良い解決策がありますか?
ここQt4.7 VS2008