我现在正在使用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;
}
我可以改用QFileDialog
普通的构造函数,如此处所述。但是,然后我似乎没有得到本机 Windows 文件打开对话框。
有没有办法获得一个非崩溃程序并通过 Qt 使用本机 Windows 文件打开对话框?