在linux下用qt打开或直接读取文件及其中的问题!(system(),qfile,qprocess)
2012-08-30 23:19
627 查看
打开文件:
1.
system("/home/qt/HelloWorld/HelloWorld");//直接打开文件。
注:若出现 error: cannot convert 'QString' to 'const char*' for argument '1' to 'int system(const char*)'
是因为system()接收ascii码,一般字符串可以,但加变量就不行(如 tr("iwconfig wlan0 essid %1 ").arg(wifi)),这时把 tr("iwconfig wlan0 essid %1 ").arg(wifi)定义成一个
变量。如wifiConnect。在system(wifiConnect.toAscii())就可以了。
还有个问题就是,打开这个文件,如果这个文件不是全屏,背景色会是绿色!!(看不到主程序)可以用
QWSServer::setBackground(QColor(255,255,255,0));
来改变背景色,但是始终做不到透明效果。这时候要用QProcess!
2.
QProcess *process;
process = new QProcess;
process->setProcessChannelMode(QProcess::ForwardedChannels);
QString address;
QStringList strList;
address ="/curtain";
strList.append(tr("%1").arg(idTransfer));
strList.append("-small-screen");
process->start(address,strList);
完美的无背景效果!
这里也有好几点要注意!
首先同一时间只能有一个process在进行
接着,qstring里不能有空格!如果要带参数用上面qstringlist的方法。
读取文件(文本)并在qt中使用:
QString fileName;
fileName = "/home/c/qt/TestWifi/temp";
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug()<<"!";
return;
}
QTextStream in(&file);
QString line = in.readLine();
while (!line.isNull())
{
qDebug()<<line;
line = in.readLine();
}
1.
system("/home/qt/HelloWorld/HelloWorld");//直接打开文件。
注:若出现 error: cannot convert 'QString' to 'const char*' for argument '1' to 'int system(const char*)'
是因为system()接收ascii码,一般字符串可以,但加变量就不行(如 tr("iwconfig wlan0 essid %1 ").arg(wifi)),这时把 tr("iwconfig wlan0 essid %1 ").arg(wifi)定义成一个
变量。如wifiConnect。在system(wifiConnect.toAscii())就可以了。
还有个问题就是,打开这个文件,如果这个文件不是全屏,背景色会是绿色!!(看不到主程序)可以用
QWSServer::setBackground(QColor(255,255,255,0));
来改变背景色,但是始终做不到透明效果。这时候要用QProcess!
2.
QProcess *process;
process = new QProcess;
process->setProcessChannelMode(QProcess::ForwardedChannels);
QString address;
QStringList strList;
address ="/curtain";
strList.append(tr("%1").arg(idTransfer));
strList.append("-small-screen");
process->start(address,strList);
完美的无背景效果!
这里也有好几点要注意!
首先同一时间只能有一个process在进行
接着,qstring里不能有空格!如果要带参数用上面qstringlist的方法。
读取文件(文本)并在qt中使用:
QString fileName;
fileName = "/home/c/qt/TestWifi/temp";
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug()<<"!";
return;
}
QTextStream in(&file);
QString line = in.readLine();
while (!line.isNull())
{
qDebug()<<line;
line = in.readLine();
}
相关文章推荐
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
- Linux 上Qt读取中文文件路径问题
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- QT调用VC 动态链接库 解决QT打开或保存文件时闪退的问题
- linux下打开windows txt文件中文乱码问题
- 今天刚安装了linux redhat6.4 在打开的Firefox的时候报错:无法初始化应用程序安全组件。很有可能您的程序个人目录中的文件出现问题。请检查
- linux下打开windows txt文件中文乱码问题
- linux下打开windows txt文件中文乱码问题
- 解决ie下载excel文件直接在浏览器打开的问题(tomcat,web项目)
- 遇到问题----linux-----linux 打开文件数 too many open files 解决方法
- Ubuntu中QT打开Makefile文件,无法高亮显示问题
- C# System.IO.FileStream 读取被其他程序打开的文件提示“文件正由另一进程使用,因此该进程无法访问该文件。”
- Linux目录权限导致进程打开文件失败的问题
- Qt打开文件目录并选中文件(不使用Win32API,使用QProcess)
- 解决CHM文件无法从网络共享位置上直接打开的问题
- 解决linux用记事本打开文件乱码问题
- jsp页面 java 文件下载设置禁止IE直接打开配置问题
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- 遇到问题----linux-----linux 打开文件数 too many open files 解决方法
- VS2015 QT工程中无法打开包括文件: “QDialog”: No such file or directory问题