QMainWindow がアクティブになる前にのみ情報ダイアログを表示した後にクラッシュする、ウィンドウ化されたアプリケーションがあります。
情報ダイアログは、渡されたデータが無効な場合にのみ表示されますが、ユーザーの操作 (ファイルの選択/ドラッグ) または引数として渡された可能性があり、問題が発生する可能性があります。いつ/どのようにエラーダイアログを表示する必要がありますか?
注: ダイアログが (exec() ではなく show() メソッドで) 表示されるだけの場合、クラッシュはしませんが、ダイアログは setModal( true ) を使用してもすぐに破棄されます。
何か案は?ありがとう、
編集:
いくつかのコード:
int WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmdLine, int nShowCmd)
{
QApplication app(__argc, __argv);
MBViewer viewer;
viewer.show();
return app.exec();
}
MBViewer::MBViewer()
{
setAcceptDrops(true);
m_ui.setupUi(this);
m_viewer = new Viewer_Widget();
m_ui.preview_layout->addWidget(m_viewer);
parse_parameters();
connect_controls();
connect_actions();
}
void MBViewer::connect_controls()
{
(...)
connect( m_viewer, SIGNAL( view_initialized()), this, SLOT( open_file() ));
(...)
}
void MBViewer::open_file()
{
// somefile is set in parse_parameters or by user interaction
if (!somefile.is_valid()) {
m_viewer->reset();
// This will crash application after user clicked OK button
QMessageBox::information( this, "Error", "Error text", QMessageBox::Ok );
return;
}
(...)
}