как перенаправить вывод консоли в GUI в qt на платформе Linux

#c #linux #qt

#c #linux #qt

Вопрос:

я делаю проект под названием packet sniffing.который работает аналогично etherial.it захватывает и отображает все пакеты, поступающие на хост. для разработки этого проекта я работаю на платформе Linux и использую QT для его разработки. просто подскажите, у меня возникли следующие проблемы

  1. я могу отображать информацию о пакете в консоли, я хотел перенаправить эту информацию о пакете в свой графический интерфейс. возможно ли это.

Комментарии:

1. Программа, которую вы кодируете, выполняет перехват пакетов, или это внешняя программа?

Ответ №1:

Извините, что не точен, у меня нет материала для ссылки передо мной. Недавно я сделал именно это, это довольно просто. Используйте QProcess для запуска анализатора пакетов, затем создайте слот для обработки сигнала readyRead (?). Слот readyRead затем может считывать стандартный вывод и stderr из процесса и помещать вывод в графический интерфейс.

Ответ №2:

Если вы передаете std-вывод внешней программы в свою программу Qt, вы можете использовать QTextStream и присоединить его к вашему стандартному интерфейсу (см. Документы).

Оттуда вы можете передать объект QTextStream вокруг вашей программы и извлечь входные данные с помощью QTextStream::readLine(), добавив строки к вашему (например) QTextEdit.

Я не знаю, сработает ли это, но вы могли бы даже захватить QIODevice из QTextStream::device (), а затем подключить сигналы QIODevice:: readyRead () к вашим собственным слотам, чтобы сделать все асинхронным.

Комментарии:

1. спасибо leegent … теперь я могу получить вывод с консоли .. я использовал оба метода…

2. Вы должны отметить один из этих ответов как правильный 🙂