gpt4 book ai didi

c++ - 在Qt中QFileDialog setsuffix在Linux中不起作用,如何解决?

转载 作者:行者123 更新时间:2023-12-02 10:22:41 31 4
gpt4 key购买 nike

我正在为我的qt应用程序保存对话框。一切正常,但是如果未在文件名后面添加文件扩展名,则即使选择了过滤器,它也不会自动与文件扩展名一起保存。

我知道我需要设置一个defaultsuffix选项,但是即使我这样做了,如果没有给出扩展名,它也不会自动添加。

我发现了其他几个类似的问题,在哪里可以在Windows上阅读,但在Linux发行版上可能会失败。如果是这样,有没有简单的解决方法?因为现在,我没有有效的解决方案...

void MainWindow::on_actionSave_Chart_As_triggered()
{
QFileDialog *fileDialog = new QFileDialog;
fileDialog->setDefaultSuffix("files (*);;AstroQt aqt (*.aqt)");
QString fileName = fileDialog->getSaveFileName(this, "Save Radix", ui->label_2->text() +".aqt", "AstroQT(*.aqt)");

qDebug() << " save file name " << fileName << endl;

QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Text)) {
QMessageBox::warning(this, "Warning", "Cannot save file: " + file.errorString());
return;
}

setWindowTitle(fileName);

QTextStream out(&file);
QString text = "text that will be saved...";

out << text;
file.close();
}

编辑:尝试了多种解决方案后,似乎没有一个可行。但我猜应该有。为什么还有后缀功能...?现在,我解决了它手动执行的问题。但是我对此不满意,应该有更好的解决方案/解释。
// add extension if none is found.
if(!fileName.endsWith(".aqt"))
fileName.append(".aqt");

最佳答案

如果您使用静态方法getSaveFileName,则似乎正常工作:

#include <QFileDialog>
#include <QApplication>
#include <QDebug>

int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QString fileName = QFileDialog::getSaveFileName(
nullptr, QObject::tr("Save File"),
"teste.aqt",
QObject::tr("AstroQt (*.aqt)"));

qDebug() << " save file name " << fileName << endl;
return app.exec();
}

如果键入不带扩展名的文件,则得到带扩展名的正确文件名。

关于c++ - 在Qt中QFileDialog setsuffix在Linux中不起作用,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409108/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com