私は現在QFileDialog::getOpenFileNameを使用しています。ただし、この記事で提案されているように、ダイアログが開いているときにメイン アプリケーションを閉じると、これがクラッシュします。クラッシュを再現する方法の例をここで見ることができます:
int main(int argc, char **argv) {
QApplication application{argc, argv};
QMainWindow *main_window = new QMainWindow();
main_window->show();
QPushButton *button = new QPushButton("Press me");
main_window->setCentralWidget(button);
QObject::connect(button, &QPushButton::clicked, [main_window]() {
QTimer::singleShot(2000, [main_window]() { delete main_window; });
QFileDialog::getOpenFileName(main_window, "Close me fast or I will crash!");
});
application.exec();
return 0;
}
here でQFileDialog
説明されているように、代わりに通常のコンストラクターを使用できます。ただし、ネイティブの Windows ファイルを開くダイアログが表示されないようです。
クラッシュしないプログラムを取得し、Qt を介してネイティブの Windows ファイルを開くダイアログを使用する方法はありますか?