используйте Qt, чтобы найти, какой редактор установлен на машине с Linux - PullRequest
0 голосов
/ 02 ноября 2019

В моей программе на C ++ / Qt я хотел бы знать, какой текстовый редактор доступен на Linux-машине пользователя, чтобы я мог использовать его для открытия текстового файла из моей программы. Есть несколько широко используемых редакторов, таких как gedit, kate и еще несколько, поэтому я хотел бы проверить их. Моим наивным намерением было использовать QProcess в комбинации с command -v foobar, как в Как проверить, существует ли программа из скрипта Bash? , но, к сожалению, похоже, что это не то, что я ожидаю. Я надеялся, что коды выхода могут указать результат.

qDebug() << QProcess::execute("command -v kate") << QProcess::execute("command -v gedit");

... но процессы даже не запустились и строка вернула -2 -2.

Есть ли способ добиться того, что мне нужно?

1 Ответ

1 голос
/ 02 ноября 2019

Вам нужно запустить его через sh, setProcessChannelMode , чтобы получить ошибку дочернего элемента команды sh:

QProcess chkexists;
chkexists.setProcessChannelMode(QProcess::MergedChannels);
chkexists.start("sh", QStringList()<<"-c"<<"command -v kate");
chkexists.waitForFinished();
if(chkexists.exitCode()==0){
////editor exists
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...