QFileDialog::getSaveFileName() returns 单击文件对话框中的保存后的空字符串

QFileDialog::getSaveFileName() returns an empty string after clicking on save in the file dialog

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

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

您检查的变量值不正确。也许这只是一个错字,但它应该是 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
    }
}