LinuxForum.Fans
Тема

Qt Gui для bash скрипта

Автор: tmp13 4 сообщений 1852 просмотров
#182210

Пришла мне в голову сумашедшая идея написать к одному bash скрипту GUI вообщем то по фиг какое но желательно Qt.
Т.к c Qt+Python я уже чет делал правда давно и не помню. Открыл я Qt Desiger и нарисовал формочку:

Вот вопрос собственно как к такой штуке прикрутить готовый bash скрипт... организовать правильную передачу переменных туда и т.д.

Приветствуются ссылки на примеры по этой теме...

P.S в инете искал сумбурно как то не понятно то ли это что мне надо или нет.

#182240

QProcess можно не только баш, но и любую прогу/утилиту

#182243

от сырец для затравки

text

this->proc = new QProcess(this);
this->proc->setProcessChannelMode(QProcess::MergedChannels); // Устанавливаем, что вывод (и ошибки и прочее) будет валиться в один канал
connect (this->proc, SIGNAL(readyReadStandardOutput()), this, SLOT(onReady())) ; // ловим когда процесс что то выдал
connect (this->proc, SIGNAL(readyReadStandardError()), this, SLOT(onReadyError())) ; // ловим когда процесс выдал ошибку
connect (this->proc, SIGNAL(finished(int)), this, SLOT(onFinished(int))) ; //ловим когда процесс закончил работу

proc->start("ls",QStringList()<<SavedFileName << "-la"<<"/home"); //запускаем процесс

// второй массив параметров QEventLoop loop; connect(this,SIGNAL(finished(int)),&loop,SLOT(quit())); loop.exec(); //Выше в трех строках не даем приожению завершиться пока у нас все не отработает

// слоты подключенные выше void MDialog::onReady() { QString output(QString::fromLocal8Bit(static_cast<QProcess *>(sender())->readAllStandardOutput())); if (!output.isEmpty()) { qDebug() << output; } } void MDialog::onReadyError() { QString output(static_cast<QProcess *>(sender())->readAllStandardOutput ()); if (!output.isEmpty()) { qDebug() << "Error:" << output; } } void MDialog::onFinished(int /*result*/) { qDebug () << "Ура";

// А так можно прибить процесс this->proc->terminate(); this->proc->waitForFinished(10000); }

#182257

Тёмный лес=)
Будем разбиратся=)

Войдите или зарегистрируйтесь, чтобы ответить.