macOS中Qt保存的本地文件去哪了?

引言

今天在实践Qt+MySQL的小项目《餐饮信息服务系统》时,打印账单,即保存文件到本地,却在项目根目录下未发现保存的文件,利用spotlight和alfred都搜不到,并且程序也能顺利执行(未进入保存失败路径),甚是奇怪。

保存文件操作如下:

    QFile list("orderlist.txt");
    if(!list.open(QIODevice::WriteOnly | QIODevice::Text))  //以写的方式打开,并清除原来的数据
    {
        QMessageBox::warning(this,tr("提示"),tr("打印账单出错!"),QMessageBox::Ok);
        return;
    }
    //do some thing

之前在win平台下,文件名前未加前缀指定具体路径情况下,orderlist.txt应该会直接保存到项目根目录,发布后会保存到exe所在文件夹。
可是mac下却一直找不到文件所在,后来尝试在Qt手动打开本地文件:

    QString fileName = QFileDialog::getOpenFileName(this,tr("Open file"), "", tr("Files (*.txt);; Files (*.*)"));  

    if (!fileName.isNull())
    {
          qDebug()<

发现在项目根目录下打开了这样一个路径:Exp11_FoodOrder.app/Contents/MacOS
这里写图片描述
之前生成的文件静静趟在该路径下。。。
经过一番探查发现:

Mac中的GUI应用必须以Bundle的形式运行,所谓Bundle,是一个以”.app”结尾命名的文件夹,系统自动识别它为一个应用包,应用所有的东西(执行文件、链接的动态库、资源文件等等)都在里面了,打开应用直接”open myApp.app”就可以了,安装的时候直接把Bundle拖到Finder里就行了。卸载的时候直接把Bundle删除就行了。

后来发现终端中是可以查找到该文件的

$ find . -name 'orderlist.txt' 
./exp11_FoodOrder/Exp11_FoodOrder.app/Contents/MacOS/orderlist.txt

在这个问题上纠结了好久,真是汗颜。。。

参考

Qt for macOS - Deployment
Mac下发布Qt程序并修改图标

你可能感兴趣的:(mac,qt)