1, QProcess
QProcess 提供静态函数 QStringList QProcess::systemEnvironment () [static], 返回环境变量键值对的列表。
QStringList QProcess::environment () const
和 setEnvironment ( const QStringList & environment )
QProcess process;
QStringList env = QProcess::systemEnvironment(); env <<
“TMPDIR=C:\MyApp\temp”; // Add an environment variable
env.replaceInStrings(QRegExp(“^PATH=(.*)”, Qt::CaseInsensitive),
“PATH=\1;C:\Bin”); process.setEnvironment(env);
process.start(“myapp”);
上述两个函数Qt已弃用 , 用下面的QProcessEnvironment替代,效率更高
QProcessEnvironment QProcess::processEnvironment () const
void QProcess::setProcessEnvironment ( const QProcessEnvironment & environment )
QProcess process; QProcessEnvironment env =
QProcessEnvironment::systemEnvironment(); env.insert(“TMPDIR”,
“C:\MyApp\temp”); // Add an environment variable env.insert(“PATH”,
env.value(“Path”) + “;C:\Bin”); process.setProcessEnvironment(env);
process.start(“myapp”);
注意:windows下,环境变量是大小写不敏感的
2, QProcessEnvironment类
QProcessEnvironment可以
添加insert ( const QString & name, const QString & value )和
移除remove ( const QString & name )环境变量值,
判断某个环境变量是否存在contains ( const QString & name ) const,
返回系统环境变量列表QStringList QProcessEnvironment::toStringList () const,
取得某个变量的值,QString QProcessEnvironment::value ( const QString & name, const QString & defaultValue = QString() ) const。
判断环境变量是否为空 isEmpty() ,和清空环境变量 clear()
使用相当方便.
应用举例:比如想获得Qt安装目录下的demos的某个pro文件
可以这样,
QProcessEnvironment envirenment =
QProcessEnvironment::systemEnvironment();QString qtDir = envirenment.value(“QTDIR”);
QString dir = QFileDialog::getOpenFileName(this, “打开项目”, qtDir +
“/demos”, tr(“pro file(*.pro)”));QString dirName = dir.left(dir.lastIndexOf(“/”));
QString flieName = dir.split(“/”).last();