|
1Qter豆
关于Qt中QProcess::write的函数问题。
在Qprocess中,写一个小程序,流程是启动cmd.exe控制台,先用write()函数在控制台中写入一个exe(以绝对路径方式,比如E:\\ABC\\123\\Concole.exe,这里用Write()函数写,只能双斜杠,测试单斜杠的路径不行),再用write()函数写一个txt(以同样的方法写,因为txt文件里面是参数,需要同时写入exe与txt文件才能执行)。
1、以下第一种方式可以运行,如下
QProcess myProcess;
myProcess.start("cmd.exe"); //start()启动exe文件
myProcess.write("E:\\ABD\\123\\InSAR_Concole.exe ");
myProcess.write("E:\\Fc\\Canshu\\TEST.txt\n\r");
myProcess.waitForFinished();
myProcess.close();
2、我想进一步写一个小工具时,想要改进下,写一个Widget界面,把参数写好保存并运行,然后获取保存后txt的路径,再 用相同的方法write()函数写,这时候就不行了,因为获取的path路径是一个QString类型,用write(paht)函数去写入控制台就会报错,然后我进行如下各种转换也都不行。
************程序开始********************
//下面是从文本框获取内容,无报错
void MainWindow:n_pushButton_clicked()
{
//getSaveFileName()保存路径及文件格式
QString path = QFileDialog::getSaveFileName(this, "Save File", "../", "TXT(*.txt)");
if(path.isEmpty() == false)
{
QFile file; //创建文件对象
file.setFileName(path); //保存文件的名字
//打开文件,只写的方式
bool isOk = file.open(QIODevice::WriteOnly);
//如果打开成功,再进行操作
if(isOk = true)
{
//toPlainText()获取文本编辑区的内容
QString str = ui->textEdit->toPlainText();
//写文件
//QString类型转为QByteArray类型
file.write(str.toUtf8()); //保存为utf8格式,方便Qt读取
}
file.close();
}
//以下程序会出问题
QFileInfo info(path);
qDebug()<<"文件路径"<<info.filePath();
QString path1 = info.filePath();
qDebug()<<"path1"<<path1;
//替换路径中的"/",使用replace();函数替换"/"->"\\"
//会把获取的E:/ABD/123替换为E:\\ABD\\123
path1.replace("/","\\");
qDebug()<<"替换后的path1:"<<path1;
//创建进程,开始执行程序
myProcess.start("cmd.exe"); //start()启动exe文件
myProcess.write("E:\\ABD\\123\\InSAR_Concole.exe ");
myProcess.write(path1);
myProcess.write("\n\r");
myProcess.waitForFinished();
myProcess.close();
************程序结束**************
其中用过myProcess.write(path1.toStdString().data()); path1.toUtf8(),path1.toLocal8Bit()等转换写在write函数中都没反应,程序都没有报错。
其中用qDebug()把转换后的path1都打印了,地址显示正常
**********************************
path1 "E:/Qtcode/1.txt"
替换后的path1: "E:\\Qtcode\\1.txt"
转换为toUtf8:"E:\\Qtcode\\1.txt"
转换为toLocal8Bit:"E:\\Qtcode\\1.txt"
转换为toStdString().data():E:\Qtcode\1.txt
QString ->QByteArray转换: "E:\\Qtcode\\1.txt"
**********************************
第一个程序用write()写路径都正常,第二种用write(path)将路径path写入write()中却出错,在此请教下各位老师!
|
|