Запускаем консольное приложение и выводим результат работы в GUI Qt

Частенько нужно написать GUI к уже готовой программе имеющей консольный интерфейс.
В Qt эта задача существенно упрощена. Нам понадобится всего несколько строк кода для вывода результат работы программы в форму.
Итак. Сначала создадим какой нибудь «hello world» и откомпилируем его:

#include <iostream>
using namespace std;

int main(int argc,char **argv) {
    cout << "Hello world!" << endl;
    return 0;    
}

Я использую linux, так что откомпилировал так:

g++ prog.cpp -o prog

Если у вас Windows создайте проект в студии и запаситесь бинарником prog.exe.

Теперь приступим к созданию собственно Qt приложения.
Подключим необходимые заголовочные файлы:

#include <QApplication>
#include <QProcess>
#include <QTextEdit>

В функции main нашего приложения создадим идентификатор приложения и объект QProcess:

QApplication a(argc, argv);
QProcess pr;

Запускаем нашу консольную утилиту:

pr.start("./prog");  //таким образом необходимо положить исполняемый файл в папку билда приложения на qt

Обратите внимание, что Windows пользователи должны указать приложение примерно так (точно не скажу.. давно это было):

pr.start("prog.exe");

Создаём поле в которое будет выведен результат:

QTextEdit edit;

Ждём пока процесс не завершится:

    if (pr.waitForFinished() == true) {
        QByteArray b = pr.readAll();  //читаем вывод
        edit.setText(QString(b));  //конвертируем в строковый формат и выводим в поле
    }

Показываем поле и ждём действий пользователя:

    edit.show();
    return a.exec();

Можете попробовать также вывести информацию о каталоге при помощи команды dir (есть она по моему во всех ОС)

pr.start("dir");

Вперёд писать GUI к очередной консольной утилите.
Скачать проект.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий