Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: admsasha от Июль 16, 2013, 16:48



Название: Как сделать одновременно консольное и GUI приложение ?
Отправлено: admsasha от Июль 16, 2013, 16:48
Как сделать приложение и консольным и GUI ? Например, по умолчанию оно консольное, а когда указан параметр -gui, открывать QWidget. Так вообще возможно ?


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: kambala от Июль 16, 2013, 17:28
по идее оно: QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled ). в документации к этому конструктору и пример есть.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: Bepec от Июль 16, 2013, 17:31
По идее нет консольного приложения с GUI.

Но есть GUI с консолью. Линковаться всё равно с QtGui будет ^.^


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: thechicho от Июль 16, 2013, 18:32
я как-то так делал как-то в теоретических целях

Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QStringList arguments = qApp->arguments();
   if (arguments.count() == 1 || arguments.contains("gui")) {
       RClientDialog *w = new RClientDialog;
       w->show();
       return a.exec();
   } else {
       arguments.removeFirst();
       Console console(arguments);
       console.output("Work done!");
       return 0;
   }
}


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: Alex Custov от Июль 17, 2013, 02:27
Какое-то весьма странное сравнение "if (arguments.count() == 1 || arguments.contains("gui"))", да и в Linux это работать не будет без X11. Программа вывалится с ошибкой "Cannot connect to display".


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: thechicho от Июль 17, 2013, 05:37
первый аргумент - имя программы.
если количество аргументов равно 1, значит никаких аргументов не задано.
то есть открыть гуи, если не задано аргументов или один из аргументов gui.
покажите как надо правильно это делать? я на ходу придумывал рабочее решение тогда.

я в линуксе хз как это работает. но если Qt требуется х11 для гуи там, то наверное это очевидно?


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: admsasha от Июль 17, 2013, 07:32
по идее оно: QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled ). в документации к этому конструктору и пример есть.
Спасибо, помогло.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: Hrundel от Июль 17, 2013, 14:30
Честно сказать всегда не понимаю именно этой проблемы. Неужели влом написать маленькое окошечко с текстовым полем и двумя-тремя функциями, которые добавляют строки вывода?
Или просто не умешь? Тогда надо вопрос по другому формулировать: Например! Скажите как выводить данные в текстовое поле? Хочу че-та типа консоли смастырить.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: admsasha от Июль 17, 2013, 15:04
Честно сказать всегда не понимаю именно этой проблемы. Неужели влом написать маленькое окошечко с текстовым полем и двумя-тремя функциями, которые добавляют строки вывода?
Или просто не умешь? Тогда надо вопрос по другому формулировать: Например! Скажите как выводить данные в текстовое поле? Хочу че-та типа консоли смастырить.
Лично мне консоль нужна, для того чтобы делать вывод там где нет X.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: Hrundel от Июль 17, 2013, 17:20
А я уже было подумал и то и другое. Тады конечно ой  ;D


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: kambala от Июль 17, 2013, 17:42
не всякой программе нужен гуи, да и ничего плохого в консольных приложениях нету. юникс системы ж как-то жили раньше и продолжают жить без всяких графических пакетов.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: Hrundel от Июль 17, 2013, 23:32
Да я собственно и сам для Unixa пишу. И кажись ничего такого не сказал, что мол плохи таки консольные приложения. Да и под досом в псевдографике даже тетрис както от нечего делать написал.

Или ты Камбала просто повоспитывать кого-нибудь решил?  >:(


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: tester64 от Июль 18, 2013, 00:08
по идее оно: QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled ). в документации к этому конструктору и пример есть.

В Qt 5 это убрали. Там для консольного приложения предлагается использовать/наследовать QCoreApplication, а для GUI - QApplication.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: kambala от Июль 18, 2013, 00:16
Или ты Камбала просто повоспитывать кого-нибудь решил?  >:(
нет, я никого воспитывать не собирался. просто стало непонятно откуда ты такие резкие выводы сделал:
Честно сказать всегда не понимаю именно этой проблемы. Неужели влом написать маленькое окошечко с текстовым полем и двумя-тремя функциями, которые добавляют строки вывода?
Или просто не умешь? Тогда надо вопрос по другому формулировать: Например! Скажите как выводить данные в текстовое поле? Хочу че-та типа консоли смастырить.


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: thechicho от Июль 18, 2013, 07:27
Hrundel, дешевые понты.
//Честно сказать всегда не понимаю именно этой проблемы.
я вот тоже никогда таких людей не понимал.
вместо того, чтобы чем-то помочь, писать

Цитировать
Неужели влом написать маленькое окошечко с текстовым полем и двумя-тремя функциями, которые добавляют строки вывода?
Или просто не умешь?

специалист, блин :-\


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: Hrundel от Июль 18, 2013, 11:16
Ладно, замнём для ясности - я не точно понял вопрос, некоторые (Гриши) не поняли моих амбиций. на том и разойдемся


Название: Re: Как сделать одновременно консольное и GUI приложение ?
Отправлено: sergek от Июль 18, 2013, 11:58
Как сделать приложение и консольным и GUI ? Например, по умолчанию оно консольное, а когда указан параметр -gui, открывать QWidget. Так вообще возможно ?
Как уже сказал Верес, линковаться будет с Gui.  Значит, там, где нет иксов, будут проблемы. Плюс дополнительные сложности с запуском программы из cron.
Если вопрос  только в том, чтобы в зависимости от параметра командной строки перенаправить вывод либо в консоль, либо в gui, то и тут сложности - в windows консоль с графическим интерфейсом не дружит. Поэтому в виндах вывод я направляю в трей. В linix все легко - хочешь, в gui, хочешь - в консоль.
Прошу прощения, вырезать пример некогда, поэтому могу дать ссылку на готовый проект: http://www.freesoft.ru/?id=713604 (http://www.freesoft.ru/?id=713604).