Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GUI Frontend для консольной проги, GUI Frontend для консольной проги 
:(
    Опции темы
LionMdS
  Дата 23.3.2011, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



Вобщем недавно начал изучать Qt. Использую Archlinux.

Для практики решил написать GUI для проги yaourt (надстройка над менеджером пакетов pacman)

Теперь суть проблемы:

Код

void MainWindow::on_pushButton_clicked()
{
    QStringList args;
    args << "-Syub" << "--aur";
    process->setEnvironment(QProcess::systemEnvironment());
    process->start("yaourt", args);
    connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(slotMessages()) );
    process->waitForFinished();
    process->deleteLater();
}
 
void MainWindow::slotMessages()
{
    ui->textEdit->append(QString::fromLocal8Bit(process->readAllStandardOutput()));
}


При чтении инфы от пакета - yaourt -Si firefox, идёт выброс нужной инфы после завершения приложения.
Но когда использую yaourt -Syub --aur, для обновления выхлопа нету...

Суть в том что приложение посылает сигнал только по завершении, а мне надо полностью синхронная работа, чтобы при возникновении определённых событий пользователь мог принять решение...

Вопрос как заставить программы работать полностью синхронно, чтобы когда в консоль выкидывает очередную строку я сразу же её получал?
PM MAIL   Вверх
alexvs11
Дата 23.3.2011, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



есть некий сигнал readyReadStandardOutput, может он подойдет?
PM MAIL   Вверх
LionMdS
Дата 23.3.2011, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



он в коде у меня написан, и не работает...
PM MAIL   Вверх
alexvs11
Дата 23.3.2011, 04:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



о, как я просмотрел
а readyReadStandardError, можт она в stderr пишет
PM MAIL   Вверх
LionMdS
Дата 23.3.2011, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



Вы очень даже правы!

Вопрос состоит теперь в другом, как запустить через процесс программу от рута или через sudo, суть в том что я не могу ввести пароль, т.к. Программа выдаёт ошибку, походу надо использовать kdialog или что там..
PM MAIL   Вверх
LionMdS
Дата 23.3.2011, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



Код

void MainWindow::on_pushButton_clicked()
{
   QStringList args;
   args << "-c" << "yaourt" << "-Syu" << "--aur";
   process->setEnvironment(QProcess::systemEnvironment());
   process->start("kdesu", args);
   connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(slotMessages()) );
   connect(process, SIGNAL(readyReadStandardError()), this, SLOT(slotMessages()) );
   process->waitForFinished();
   process->deleteLater();
}

void MainWindow::slotMessages()
{
   ui->textEdit->append(QString::fromLocal8Bit(process->readAllStandardOutput()));
   ui->textEdit->append(QString::fromLocal8Bit(process->readAllStandardError()));
}


изменил код, но kdesu не позволяет запустить программу с параметрами, есть ещё способы получить права рут? 
PM MAIL   Вверх
TIT
Дата 23.3.2011, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 4.4.2010

Репутация: нет
Всего: 3



В корне неправильно требовать своими силами пароль от пользователя, а потом пытаться его подсунуть программе.
Пусть пользователь запускает твою программу уже под рутом, тогда права рута будут распространяться и на все дочерние программы.

p. s.: Зачем писать обёртку над йогуртом, если можно сразу над пакманом. Лишний посредник тут не к чему, имхо.

Это сообщение отредактировал(а) TIT - 23.3.2011, 10:01
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
LionMdS
Дата 23.3.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



да и идея вся в том чтобы c aurom работал... А права всё таки хочется культурно сделать, уже просто ради интереса, както же можно smile

Добавлено через 2 минуты и 6 секунд
а как вообще правильно поступить для написания фронтенда, мож я в корне не правильно начал??
PM MAIL   Вверх
TIT
Дата 23.3.2011, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 4.4.2010

Репутация: нет
Всего: 3



Культурно -- это как раз запускать твою программу под рутом, а не вводить в ней мой пароль.
Я бы не доверил свой пароль сторонней программе. Йогурт требует для работы рутовые привилегии, значит изначально его над под рутом запускать, а т. к. твоя программа 110% своего времени будет с ним работать, то и её надо рутовой делать. Qt тут тебе не поможет.
Нет, конечно, можно судорез подправить, который будет разрешать тебе на твоём компе работать с йогуртом из под пользователя, но ты же понимаешь, что этого никто из пользователей не будет делать.

p. s.: Если решил изучать Qt, то ставь перед собой задачи, которые реально нужны будут пользователям, т. е. которые ещё не решены.
Гуёвых решений для работы с пакетами под Арчи полно, только тру линупсойды ими никогда не будут пользоваться.
Хочешь что-нить польезное сделать -- сделай приличный твиттер-клиент или хороший почтовый нотификатор.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
LionMdS
Дата 23.3.2011, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



Да чтобы чтото хорешее сделать надо сразу научится, я C# хорошо знаю, вот только QT от него ооочень сильно отличается, а на шарпе сам понимаеш как под линухом!...

А вопрос для меня просто интерестный, что если программе понадобится рут доступ? Это полюбому можно сделать, только я пока не знаю как, даже не обязательно процесс запускать с проги, а просто перевести в рут режим программу во время выполнения, мне это кажется актуальным и интерестным..
PM MAIL   Вверх
alexvs11
Дата 23.3.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



Цитата(LionMdS @  23.3.2011,  05:41 Найти цитируемый пост)
Вопрос состоит теперь в другом, как запустить через процесс программу от рута или через sudo, суть в том что я не могу ввести пароль, т.к. Программа выдаёт ошибку, походу надо использовать kdialog или что там..

gksu / kdesu ?
PM MAIL   Вверх
LionMdS
Дата 23.3.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



да и насчёт подхода вообще, я правильно начал копать в сторону qprocess или надо было вообще по другому это делать?

Добавлено через 1 минуту и 36 секунд
Цитата(alexvs11 @ 23.3.2011,  10:30)
Цитата(LionMdS @  23.3.2011,  05:41 Найти цитируемый пост)
Вопрос состоит теперь в другом, как запустить через процесс программу от рута или через sudo, суть в том что я не могу ввести пароль, т.к. Программа выдаёт ошибку, походу надо использовать kdialog или что там..

gksu / kdesu ?

Я уже привёл пример в коде, так не работает...

Наведи пример если будет работать то спасибо, а так я уже всю ночь с этими kdesu вожусь...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.