QFileDialog::getSaveFileName() 在文件对话框中点击保存后返回一个空字符串

Posted

技术标签:

【中文标题】QFileDialog::getSaveFileName() 在文件对话框中点击保存后返回一个空字符串【英文标题】:QFileDialog::getSaveFileName() returns an empty string after clicking on save in the file dialog 【发布时间】:2020-06-26 18:49:40 【问题描述】:

当我尝试使用 qfiledialog 在我的 GUI 中保存文件时遇到了这个问题。我不知道为什么,但是当我单击 save_button 小部件时,文件对话框打开,我输入文件名并单击保存,但我的变量 saveFileName 在处理后仍然为空,所以我的程序总是停在那里。我不点击取消!我真的点击了保存,那么 getSaveFileName() 怎么能返回一个空字符串呢?谢谢!!

void MainWindow::on_save_button_clicked()

    QString jsonFilter = "JSON Files (*.json)";
    QString saveFileName = QFileDialog::getSaveFileName(this, "Save file", QDir::homePath(), jsonFilter);

    if(fileName.isEmpty())
    
        qDebug() << "no save file";
    
    else
    
        QJsonDocument jsonSaveDoc;
        QJsonObject jsonSaveObj;   // else statement continues if fileName contains something

【问题讨论】:

【参考方案1】:

您没有检查正确的变量值。也许这只是一个错字,但它应该是saveFileName 而不是fileName。试试这样的:

void MainWindow::on_save_button_clicked()

    QString jsonFilter = "JSON Files (*.json)";
    QString saveFileName = QFileDialog::getSaveFileName(this, "Save file", QDir::homePath(), jsonFilter);

    if(saveFileName.isEmpty())
    
        qDebug() << "no save file";
    
    else
    
        QJsonDocument jsonSaveDoc;
        QJsonObject jsonSaveObj;   // else statement continues if saveFileName contains something
    

【讨论】:

天哪,我的错。。我没有开始在 qt 上使用调试器,会在这里为我节省一些无用的工作...

以上是关于QFileDialog::getSaveFileName() 在文件对话框中点击保存后返回一个空字符串的主要内容,如果未能解决你的问题,请参考以下文章