Qt文件对话框渲染不正确和崩溃

ajs*_*ort 7 c++ qt visual-c++

我正在使用该QFileDialog::getOpenFileName函数来打开文件.但是,在运行Windows 7的客户端计算机上,这将显示损坏的打开文件对话框,如屏幕截图所示,或者崩溃整个应用程序.

对话损坏

我用来打开文件对话框的代码是:

void MainWindow::on_action_triggered() {
    auto filename = QFileDialog::getSaveFileName(this, "Generate Report", "", "CSV files (*.csv)");

    if (filename.isEmpty()) {
        return;
    }

    // Do operations on filename...
}
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio 2013中使用Qt 5.5.

ajs*_*ort 6

在这种特殊情况下,问题最终是Qt与客户端计算机上安装的Dell Backup and Recovery软件之间的不兼容,其中包括不兼容的Shell扩展。我使用的解决方案是删除备份和恢复软件,但听起来像命名Qt也是一种选择。有关更多信息,请参见QTBUG-41416


Mar*_*k R 5

我猜目录有问题。作为路径提供的空字符串可能有问题。尝试这样解决:

auto filename = QFileDialog::getSaveFileName(this, 
                                             tr("Generate Report"),
                                             QString(),
                                             tr("CSV files (*.csv)"));
// or this way
auto filename = QFileDialog::getSaveFileName(this,
                                             tr("Generate Report"),
                                             QDir::home().absolutePath(),
                                             tr("CSV files (*.csv)"));
Run Code Online (Sandbox Code Playgroud)