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

漆雕育
2023-12-01

本博主要分享如何用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

alltext+=mostlist[i].part[0]+" "+mostlist[i].part[1]+"\n";

}

out<

QMessageBox::warning(this,tr("信息"),tr("信息存储成功!\n可在系统根目录文件'UIDdate'文件夹中查看!"));

}

}

file.close();

}

上面就是文件存储的所有代码了,很容易理解吧,就是在手机根目录创建一个文件夹,在文件夹里存储想要存的数据,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函数中声明调用即可

 类似资料: