QFileDialog未提供所选文件

QFileDialog does not give selected file

本文关键字:文件 QFileDialog      更新时间:2023-10-16

我在Qt 5.2中使用QFileDialog时遇到了一个小问题。当我打开对话框时,对话框将显示,但不会将任何选定的文件发回。在下面的代码示例中,"selectedFiles.at(0)"没有给出任何内容。用户选择了正确的文件。这是一个与我的代码或Qt 5.2中的错误有关的问题吗??请帮忙。

QFileDialog dialog;
    QStringList selectedFiles;
    dialog.setFileMode(QFileDialog::AnyFile);
    dialog.setNameFilter("Images (*.png *.jpg)");
    if (dialog.exec())
    {
        selectedFiles = dialog.selectedFiles();
        QImage image(selectedFiles.at(0));
        if(image.height() != 320 && image.width() != 240)
        {
            QMessageBox messageBox;
            messageBox.setText("File is not an image or the dimension is not 320x240");
            messageBox.exec();
        }
        else
        {
            ui->browseLine->setText(selectedFiles.at(0));
        }
    }   

我没有发现您的代码中有任何错误,我对它进行了测试,它运行得很好。你所说的"selectedFiles.at(0)"到底是什么意思?selectedFiles是空的(=不包含字符串)还是返回空字符串(=包含空字符串)?

无论如何;以下是我通常的做法,也许可以试试代码,看看它是否有效:

QStringList ls = QFileDialog::getOpenFileNames(this,
                                                   "Choose one or more files",
                                                   "",
                                                   "Audio-Files(*.wav)");
for(int i = 0; i < ls.size(); i++) {
    print(ls[i]);
}

我在Mac Os X.9上的Qt 5.1.1或Qt5.2RC1也有完全相同的问题…本机标准打开文件保持在顶部(并非总是!,但80%的时间),隐藏应用程序并再次显示会使此对话框消失。。。有时也不会显示筛选的任何文件。

使用非本机Open Dialog有效!