Название: QProcess и командная строка Отправлено: Nelkor от Сентябрь 20, 2014, 16:36 Всем привет! Учусь работать с классом QProcess.
Архитектура программы: На форме имеются TextBrowser, LineEdit и PushButton; С помощью класса QProcess запускается командная строка (cmd - объект класса QProcess); В TextBrowser отображается то, что командная строка пишет нам, а с помощью LineEdit и PushButton можно писать и отправлять команды; Код простой и незатейливый: Код: #include "widget.h" Частично программа работает, выводит на экран следующее: (http://s7.hostingkartinok.com/uploads/thumbs/2014/09/4299deccd2dd6fffd114b4e416144030.png) (http://hostingkartinok.com/show-image.php?id=4299deccd2dd6fffd114b4e416144030) Во-первых, кракозябры. Не понимаю, что можно с этим сделать, ведь в Qt 5 был сильно урезан класс QTextCodec; Во-вторых, никакие команды на ввод не работают, после любой команды экран просто очищается (то есть cmd ничего не отвечает); В-третьих, я не думаю, что моя функция read() является самой оптимальной для чтения из процесса... Может быть, можно как-то сделать, чтобы текст из командной строки читался тогда, когда командная что-то написала? И кстати, командная строка запускается в "невидимом" режиме. Хотя в диспетчере задач она есть. Это так и надо или признак бага? И любые другие комментарии по поводу этой программы. Буду рад любой помощи! Название: Re: QProcess и командная строка Отправлено: torwig от Сентябрь 20, 2014, 16:46 Подключайте слоты к сигналам
Код: void readyReadStandardError() Название: Re: QProcess и командная строка Отправлено: torwig от Сентябрь 20, 2014, 16:54 В Книге Шлее есть пример в главе о процессах.
Нечто подобное как у вас. Но он при нажатии на кнопку не делает process.write(blablabla), а process.start(commandText) (предварительно в Виндовсдобавляя "cmd /C ", то есть например "cmd /C dir"). Страница 610. Название: Re: QProcess и командная строка Отправлено: torwig от Сентябрь 20, 2014, 16:56 Да простит меня господин Шлее :) Пример из книги:
Код: #ifndef _Shell_h_ Название: Re: QProcess и командная строка Отправлено: Nelkor от Сентябрь 20, 2014, 17:06 Спасибо, буду разбираться!) А с крокозябрами что?)
Название: Re: QProcess и командная строка Отправлено: Nelkor от Сентябрь 21, 2014, 16:10 Тааак, уже кое-что получается) слоты к сигналам подключил, и понял, почему у меня на ввод ничего не работало. Вот "работающий" код:
Код: #include "widget.h" Не решена проблема только с крокозябрами. Всё, что командная строка отвечает мне на русском - у меня либо вообще не выводится, либо выводится ромбиками и иероглифами. Название: Re: QProcess и командная строка Отправлено: _Vitaliy_ от Сентябрь 21, 2014, 16:23 посмотрите на эту http://www.prog.org.ru/topic_26545_0.html (http://www.prog.org.ru/topic_26545_0.html) ветку, может и натолкнет на мысль
Название: Re: QProcess и командная строка Отправлено: Nelkor от Сентябрь 23, 2014, 19:40 Натолкнула вот на какую мысль:
Код: void Widget::read() К удивлению, кодировка даже не думала меняться. Крокозябры какие были, такие же и остались. Название: Re: QProcess и командная строка Отправлено: OKTA от Сентябрь 24, 2014, 09:30 А если поменять имя кодека на CP866?
Название: Re: QProcess и командная строка Отправлено: Nelkor от Сентябрь 27, 2014, 19:24 неа
|