#c #qt #linux-mint
#c #qt #linux-mint
Вопрос:
Привет, ребята. Я новичок в Qt creator, и теперь я пытаюсь подключить его к терминалу Linux Mint 18 MATE. Проблема в том, что я могу открыть терминал, но другие команды просто не выполняются. Вот код, который я пытаюсь —
void access::on_pushButton_clicked(){
QProcess process;
process.start("mate-terminal cd /tmp");
process.write("ls -Al");
process.closeWriteChannel();
process.waitForFinished();
QByteArray output = sh.readAll();
process.close();
}
Все, что мне нужно с этим сделать, это —
- открыть терминал
- перейдите в каталог /tmp
- распечатайте содержимое
Любая помощь или подсказка о том, что я делаю неправильно, будут оценены. Спасибо!
Комментарии:
1. Почему бы не использовать QDir/QFileInfo для перечисления файлов из /tmp ?
Ответ №1:
Похоже, в этом случае вам не нужен пользовательский интерфейс терминала, поэтому вам не нужно открывать mate-terminal
, вместо этого вы должны открыть sh
. Также обратите внимание, что после вызова start
метода вы должны waitForStarted
.
QProcess process;
process.start("sh");
process.waitForStarted();
process.write("ls /tmp -Al");
process.closeWriteChannel();
process.waitForFinished();
QByteArray output = process.readAll();
process.close();
qDebug() << output;
Примечание: sh
является интерпретатором командной строки и имеет свой собственный язык сценариев, если вы хотите только начать ls
, поэтому вы можете запустить его напрямую, не начиная sh
сначала.
QProcess process;
process.start("ls /tmp -Al");
process.waitForFinished();
QByteArray output = process.readAll();
process.close();
qDebug() << output;
Комментарии:
1. Ну, на самом деле мне нужен терминал, потому что я должен сказать ему, чтобы он выполнял команды через Qt Creator и отображал результат в окне терминала. Но спасибо за ответ.
2. @Qtstruggler Итак, если вам нужно окно терминала, зачем вы его закрываете? (
process.close();
)