Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用自定义扩展名保存文件_C++_Linux_Qt_Save_File Extension - Fatal编程技术网

C++ 使用自定义扩展名保存文件

C++ 使用自定义扩展名保存文件,c++,linux,qt,save,file-extension,C++,Linux,Qt,Save,File Extension,我有一个在Windows中编写的程序,它的代码可以在Windows上运行,但是在linux中编译时,保存的文件没有.l2p扩展名 void MainWindow::on_saveButton_clicked() { QString fileName = QFileDialog::getSaveFileName(this, tr("Salvesta Projekt"), "", tr("Latid Pindalaks (*.l2p)"));

我有一个在Windows中编写的程序,它的代码可以在Windows上运行,但是在linux中编译时,保存的文件没有.l2p扩展名

void MainWindow::on_saveButton_clicked()
 {
     QString fileName = QFileDialog::getSaveFileName(this,
         tr("Salvesta Projekt"), "",
         tr("Latid Pindalaks (*.l2p)"));

     if (fileName.isEmpty())
         return;
     ...

我该怎么办?

如果文件名没有您需要的扩展名,只需添加它:

QString fileName = QFileDialog::getSaveFileName(this,
    tr("Salvesta Projekt"), "",
    tr("Latid Pindalaks (*.l2p)"));

if (fileName.isEmpty())
    return;

if (!fileName.endsWith(".l2p"))
    fileName += ".l2p";

你得到的最终结果是什么?它显示了“保存”对话框,看起来一切正常,但它保存的文件没有扩展名。你想要强制的行为正是我讨厌的windows应用程序的行为。文件扩展名应由用户决定是否使用(它们是文件名的一部分,由用户选择)。您可以让用户在“Latid Pindalaks(*.l2p)”和“所有文件(*)之间进行选择,并且只有在用户选择第一个扩展名时才强制使用扩展名。但是我不确定Qt是否提供了关于在对话框的组合框中选择了哪一个的信息。