Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ QT CLI+GUI
Автор: RazrFalcon 24.9.2010, 12:50
К примеру есть "ядро" программы. Нужно чтоб она работала из консоли. К примеру путь к текстовому файлу задаем, потом она его обрабатывает, и сохраняет в другой, путь к которому мы тоже прописали. Но нужно чтоб была еще и оболочка графическая, но отдельно. Где можно подробно почитать о таком.
1) как обратится из gui к "ядру", и на оборот
2) как вообще работать с qt cli или проще все таки обычный c++ & gcc
С уже готовыми прогами чаще всего работаю именно через консоль. Хочу попробовать свою написать.
PS: Ubuntu 10.04 + QT 4.7 +QT Creator
Автор: kuzulis 24.9.2010, 12:58
Ну так пиши обычное GUI приложение, у которого по умолчанию не показывается гуи, т.е. когда ты его запускаешь с определенными аргументами - то оно как консоль, если с другими - то оно как гуй...
Парси или аргументы командной строки или конфиг в конфиг файле и в зависимости от этого или показывай или нет Гуй.
Или что тебе нужно то?
Автор: RazrFalcon 24.9.2010, 13:07
Цитата(kuzulis @ 24.9.2010, 12:58)
Ну так пиши обычное GUI приложение, у которого по умолчанию не показывается гуи, т.е. когда ты его запускаешь с определенными аргументами - то оно как консоль, если с другими - то оно как гуй...
Некогда о таких не слышал
Допустим я напишу приложение без отображения гуя, а как же мне ему агрументы в консоли передать.
К примеру temp -cli -in "in" -out "out", что то в таком духе. Ну а если просто запускаю то он с гуй.
Но хотелось бы именно 2-а разных файла. Для гуй и клай отдельно.
Автор: Sokoloff 24.9.2010, 13:49
Цитата(RazrFalcon @ 24.9.2010, 13:50)
К примеру есть "ядро" программы. Нужно чтоб она работала из консоли. К примеру путь к текстовому файлу задаем, потом она его обрабатывает, и сохраняет в другой, путь к которому мы тоже прописали. Но нужно чтоб была еще и оболочка графическая, но отдельно. Где можно подробно почитать о таком.
1) как обратится из gui к "ядру", и на оборот
2) как вообще работать с qt cli или проще все таки обычный c++ & gcc
С уже готовыми прогами чаще всего работаю именно через консоль. Хочу попробовать свою написать.
PS: Ubuntu 10.04 + QT 4.7 +QT Creator
Для запуска CLI программы можно использовать http://doc.crossplatform.ru/qt/4.6.x/qprocess.html.
Но есть и другой вариант, весь функционал программы выносишь в библиотеку, и CLI и GUI используют эту библиотеку. В CLI остается только проверка входных параметров, печать ошибок и результатов работы. А в GUI только формы.
Автор: RazrFalcon 24.9.2010, 14:04
Цитата(Sokoloff @ 24.9.2010, 13:49)
Но есть и другой вариант, весь функционал программы выносишь в библиотеку, и CLI и GUI используют эту библиотеку. В CLI остается только проверка входных параметров, печать ошибок и результатов работы. А в GUI только формы.
Вот как сделать туже библиотеку я и не знаю, не знаю как передать в cli параметры, как принять все эти --help/-in "in" и тд.
Как из гуй подключится к lib, в моем случае .so как я понимаю и тд.
Автор: s200999900 24.9.2010, 15:33
Цитата(RazrFalcon @ 24.9.2010, 12:50)
К примеру есть "ядро" программы. Нужно чтоб она работала из консоли. К примеру путь к текстовому файлу задаем, потом она его обрабатывает, и сохраняет в другой, путь к которому мы тоже прописали. Но нужно чтоб была еще и оболочка графическая, но отдельно. Где можно подробно почитать о таком.
1) как обратится из gui к "ядру", и на оборот
2) как вообще работать с qt cli или проще все таки обычный c++ & gcc
С уже готовыми прогами чаще всего работаю именно через консоль. Хочу попробовать свою написать.
PS: Ubuntu 10.04 + QT 4.7 +QT Creator
Если интересует вариант отвязки логики программы от интерфейса (gui/cli) то в suse линуксе есть хороший вариант: http://kkaempf.blogspot.com/2008/05/declaring-ui-independence-earlier-this.html
"....Earlier this year, Stefan announced the availability of the YaST user interface engine separate from YaST itself.
The user interface engine, packaged in yast2-libyui (source code here),provides the abstraction from graphical user interfaces (Qt, Gtk) and text based (ncurses) user interfaces. It now can be used independently of YaST2 for generic (C++) applications....."
Но сам не разбирался с возможностью использования на убунту, если получится, отпишитесь пожалуйста.
Автор: Sokoloff 24.9.2010, 15:46
Цитата(RazrFalcon @ 24.9.2010, 15:04)
Цитата(Sokoloff @ 24.9.2010, 13:49)
Но есть и другой вариант, весь функционал программы выносишь в библиотеку, и CLI и GUI используют эту библиотеку. В CLI остается только проверка входных параметров, печать ошибок и результатов работы. А в GUI только формы.
Вот как сделать туже библиотеку я и не знаю, не знаю как передать в cli параметры, как принять все эти --help/-in "in" и тд.
Как из гуй подключится к lib, в моем случае .so как я понимаю и тд.
Как сделать библиотеку:
http://habrahabr.ru/blogs/cpp/101994/
http://mech.math.msu.su/~zubr/library.html
И http://www.google.ru/search?aq=0&oq=uehnjdobr&sourceid=chrome&ie=UTF-8&q=%D0%B3%D1%83%D1%80%D1%82%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%D0%B8+%D0%BC%D1%8B%D1%88%D0%B8#sclient=psy&hl=ru&newwindow=1&q=Qt+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&aq=f&aqi=&aql=&oq=&gs_rfai=&psj=1&fp=a29e5047f98f1259
Про параметры написано в http://doc.crossplatform.ru/qt/4.6.x/qapplication.html и в http://doc.crossplatform.ru/qt/4.6.x/qcoreapplication.html#arguments. Кстати http://doc.crossplatform.ru/qt/4.6.x/qapplication.html#QApplication-2 описано как сделать приложение, которое будет работать в двух режимах CLI/GUI.
Автор: RazrFalcon 24.9.2010, 16:43
Спасибо, по разбираемся сейчас.
Автор: Litkevich Yuriy 24.9.2010, 20:05
RazrFalcon, посмотреть программу которая анализирует аргументы командной строки можно, например, http://gitorious.org/qtmxtools, там используются исходники из сторонней библиотеки, для удобной работы с аргументами.
Автор: RazrFalcon 27.9.2010, 15:33
Прошу прощения за нубовство, но что делать с qDebug?
Элементарный код:
#include <QtCore/QCoreApplication>
#include <QTextStream>
#include <QString>
#include <QtDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int x=15;
QString s;
s.number(x);
qDebug() << s; //вывод ""
qDebug("%x"); // 0
qDebug("hmm"); // hmm
//qDebug(s); - error
return a.exec();
}
Автор: kwisp 27.9.2010, 16:14
RazrFalcon,
а что ты собственно хотел получить?
функция number() - статическая и не изменяет обЪект строки который её вызывает а возвращает строку с номером!
это
s.number(x);
надо заменить на
s = s.number(x);
или
s = QString::number(x);
или
s.setNum(x);
Автор: RazrFalcon 27.9.2010, 16:29
Да уш, протупил, давно на кьюте не писал.
Вопрос по теме:
Все примеры у меня компилятся и работают из выше написаны ссылок. Но к qt их отношения не вижу=/, разве что как изучение основ.
Ну в принципе пока более мене понятно что с консолькой делать, еще с аргументами разберусь и норм.
Вопрос в другом. Как подключится из gui/cli к .so ?
Мне нужна именно динамическая библиотека.
То есть, как собрать .so (ну и .a на будущие) и использовать его в своем приложении.
Гугл выдают противоречивые результаты.
PS я так понимаю что динамическая библиотека не идет как отдельный процесс, а если я буду использовать исполняемый файл, то он уже будет отдельным процессом.
Автор: kwisp 27.9.2010, 17:26
RazrFalcon,
создай отдельную тему пожалуйста и подробно опиши вопрос.
один вопрос - одна тема.
Автор: RazrFalcon 27.9.2010, 17:58
Это та же тема. Я просто сам еще не совсем разобрался.
1) У меня есть бинарник (консольный) + gui = как вызывать функции из cli
2) У меня есть GUI + расширяющие функционал .so (динамические библиотеки) = Прога делает расчет по функциям из библиотек.
Я просто не совсем понимаю как правильнее.
GUI + CLI + .so = идеальный вариант
То есть как бы на выбор что ли ?!
Одним словом я хочу разобраться как послать в библиотеку переменные, она их обработала и вернула мне решение (это я так понимаю как раз гуй+бинарник).
А библиотека я так понимаю нужна... толку с нее вообще тогда?!
Автор: Litkevich Yuriy 27.9.2010, 19:10
Цитата(RazrFalcon @ 27.9.2010, 20:29)
Как подключится из gui/cli к .so ?
это отдельная тема от
QT CLI+GUI
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)