Запустите Qt QProcess независимо от операционной системы - PullRequest
0 голосов
/ 21 ноября 2018

Я занимаюсь разработкой приложения на QT на C ++ и недавно узнал, как его использовать, поэтому я все еще не совсем уверен.Я борюсь с этим: я занимаюсь разработкой под Linux, но я бы хотел, чтобы она работала и под Windows.Код C ++ вызывает скрипт Python (передавая ему несколько аргументов), и для достижения моей цели я использую

QDir::separator()

для разделения имен папок (список аргументов содержит несколько путей), и это должно быть полезно для моей цели, потому что он будет использовать автоматически / для Linux и \ на Windows (поправьте меня, если я ошибаюсь).

Код выглядит следующим образом:

python_path= my_python_path/python;
script_path=../script.py;


QStringList arguments;
arguments << QString(script_path);
arguments << QString(arg1);
arguments << QString(arg2);


QProcess *p = new QProcess( this );

if (p){

  p->start(python_path,arguments);
}

Теперь моя проблема: в Windows я должен использовать:

 python_path= my_python_path/python.exe;

вместо:

 python_path= my_python_path/python;

Как относиться к этой мультиплатформенной разработке на QT?Определить систему и использовать если?Или есть какое-то лучшее решение?

Заранее спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете использовать макросы Q_OS.Нечто подобное должно работать (не проверено):

#if defined Q_OS_WIN
QString python_path = "my_python_path/python.exe";
#else
QString python_path = "my_python_path/python";
#endif
...