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()<<fileName;
    }

发现在项目根目录下打开了这样一个路径: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程序并修改图标

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值