qt for android存储文本文件到本地

本博主要分享如何用qt for android 非qml形势存储文本文件到本地

本来以为很麻烦,后来发现和qt在window上使用是一样的,只是用手机存储excel应该要麻烦一些或者不行,但是我是用的是t'xt文件,所以很容易就实现了这个功能。

话不多说上代码

//点击系统自带关闭按钮回调函数
void MainWindow::closeEvent(QCloseEvent *event)
{
    if(close_time==0){
        QAndroidJniObject javaToast = QAndroidJniObject::fromString("再按一次退出程序");
        QAndroidJniObject::callStaticMethod("com/ZtActivity/ZtActivity",
                                               "makeToast",
                                               "(Ljava/lang/String;)V",
                                               javaToast.object());
        closetimer = new QTimer(this);//创建1s定时器
        connect(closetimer, SIGNAL(timeout()), this, SLOT(closetimerout()));//绑定定时函数
        closetimer->start(10);
        close_time=1;
        event->ignore();//失能关闭窗口功能,只能隐藏/显示
    }
    else{//文本存储
        Open_File();
        this->close();
    }
}

上面代码部分是实现app二次退出才关闭,第一次退出会有toast提示,第二次执行关闭,在关闭前执行一些数据保存,本博主要讲解的就是数据保存这快,至于toast提示什么的请看之前我的博客。

//存储文件
void MainWindow::Open_File()
{
    QDateTime qtimeObj = QDateTime::currentDateTime();//获取时间
    QString alltext;
    //创建UIDdate文件夹
    QDir *folder = new QDir;
    bool exist = folder->exists("/storage/emulated/0/UIDdate");
    if(exist)
    {
        //QMessageBox::warning(this, tr("createDir"), tr("Dir is already existed!"));
    }
    else
    {
        //创建文件夹
        bool ok = folder->mkdir("/storage/emulated/0/UIDdate");
        if(ok)
            QMessageBox::warning(this, tr("CreateDir"), tr("Create Dir success!"));
        else
            QMessageBox::warning(this, tr("CreateDir"), tr("Create Dir fail"));
    }
    //存储文件到UIDdate文件夹内
    QString fileName;
    fileName = tr("/storage/emulated/0/UIDdate/数据文件%1.txt").arg(qtimeObj.toString("yyyyMMddhhmmss"));

    QFile file(fileName);
    if(!file.open(QIODevice::ReadWrite | QIODevice::Text))
    {
       QMessageBox::warning(this,tr("错误"),tr("打开文件失败,数据保存失败"));
       return;
    }
    else
    {
       if(!file.isReadable())
       {
           QMessageBox::warning(this,tr("错误"),tr("该文件不可读,数据保存失败"));
       }
       else
       {
           QTextStream out(&file);
           for(int i=0;i

上面就是文件存储的所有代码了,很容易理解吧,就是在手机根目录创建一个文件夹,在文件夹里存储想要存的数据,over!

2019年5月24日22:50:31补充

如果失败,请检查安装程序是否授权读写权限,询问不行,只能设置允许

再程序中添加如下代码,打开程序会询问是否开启权限

bool checkPermission() {
    QtAndroid::PermissionResult r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");
    if(r == QtAndroid::PermissionResult::Denied) {
        QtAndroid::requestPermissionsSync( QStringList() << "android.permission.WRITE_EXTERNAL_STORAGE" );
        r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");
        if(r == QtAndroid::PermissionResult::Denied) {
             return false;
        }
   }
   return true;
}

在main函数中声明调用即可

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