Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QT CLI+GUI
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
RazrFalcon
К примеру есть "ядро" программы. Нужно чтоб она работала из консоли. К примеру путь к текстовому файлу задаем, потом она его обрабатывает, и сохраняет в другой, путь к которому мы тоже прописали. Но нужно чтоб была еще и оболочка графическая, но отдельно. Где можно подробно почитать о таком.
1) как обратится из gui к "ядру", и на оборот
2) как вообще работать с qt cli или проще все таки обычный c++ & gcc
С уже готовыми прогами чаще всего работаю именно через консоль. Хочу попробовать свою написать.
PS: Ubuntu 10.04 + QT 4.7 +QT Creator

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

Парси или аргументы командной строки или конфиг в конфиг файле и в зависимости от этого или показывай или нет Гуй.

Или что тебе нужно то?
RazrFalcon
Цитата(kuzulis @ 24.9.2010, 12:58) *
Ну так пиши обычное GUI приложение, у которого по умолчанию не показывается гуи, т.е. когда ты его запускаешь с определенными аргументами - то оно как консоль, если с другими - то оно как гуй...

Некогда о таких не слышал :mellow:

Допустим я напишу приложение без отображения гуя, а как же мне ему агрументы в консоли передать.
К примеру temp -cli -in "in" -out "out", что то в таком духе. Ну а если просто запускаю то он с гуй.
Но хотелось бы именно 2-а разных файла. Для гуй и клай отдельно.
Sokoloff
Цитата(RazrFalcon @ 24.9.2010, 13:50) *
К примеру есть "ядро" программы. Нужно чтоб она работала из консоли. К примеру путь к текстовому файлу задаем, потом она его обрабатывает, и сохраняет в другой, путь к которому мы тоже прописали. Но нужно чтоб была еще и оболочка графическая, но отдельно. Где можно подробно почитать о таком.
1) как обратится из gui к "ядру", и на оборот
2) как вообще работать с qt cli или проще все таки обычный c++ & gcc
С уже готовыми прогами чаще всего работаю именно через консоль. Хочу попробовать свою написать.
PS: Ubuntu 10.04 + QT 4.7 +QT Creator


Для запуска CLI программы можно использовать QProcess.

Но есть и другой вариант, весь функционал программы выносишь в библиотеку, и CLI и GUI используют эту библиотеку. В CLI остается только проверка входных параметров, печать ошибок и результатов работы. А в GUI только формы.
RazrFalcon
Цитата(Sokoloff @ 24.9.2010, 13:49) *
Но есть и другой вариант, весь функционал программы выносишь в библиотеку, и CLI и GUI используют эту библиотеку. В CLI остается только проверка входных параметров, печать ошибок и результатов работы. А в GUI только формы.

Вот как сделать туже библиотеку я и не знаю, не знаю как передать в cli параметры, как принять все эти --help/-in "in" и тд.
Как из гуй подключится к lib, в моем случае .so как я понимаю и тд.
s200999900
Цитата(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/declar...rlier-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
Цитата(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
И еще примерно 53800

Про параметры написано в QApplication и в QCoreApplication. Кстати там же описано как сделать приложение, которое будет работать в двух режимах CLI/GUI.

RazrFalcon
Спасибо, по разбираемся сейчас.
Litkevich Yuriy
RazrFalcon, посмотреть программу которая анализирует аргументы командной строки можно, например, тут, там используются исходники из сторонней библиотеки, для удобной работы с аргументами.
RazrFalcon
Прошу прощения за нубовство, но что делать с 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
RazrFalcon,
а что ты собственно хотел получить?
функция number() - статическая и не изменяет обЪект строки который её вызывает а возвращает строку с номером!
это
s.number(x);
надо заменить на
s = s.number(x);
или
s = QString::number(x);
или
s.setNum(x);
RazrFalcon
Да уш, протупил, давно на кьюте не писал.
Вопрос по теме:
Все примеры у меня компилятся и работают из выше написаны ссылок. Но к qt их отношения не вижу=/, разве что как изучение основ.
Ну в принципе пока более мене понятно что с консолькой делать, еще с аргументами разберусь и норм.
Вопрос в другом. Как подключится из gui/cli к .so ?
Мне нужна именно динамическая библиотека.
То есть, как собрать .so (ну и .a на будущие) и использовать его в своем приложении.
Гугл выдают противоречивые результаты.
PS я так понимаю что динамическая библиотека не идет как отдельный процесс, а если я буду использовать исполняемый файл, то он уже будет отдельным процессом. <_<
kwisp
RazrFalcon,
создай отдельную тему пожалуйста и подробно опиши вопрос.
один вопрос - одна тема.
RazrFalcon
:huh:
Это та же тема. Я просто сам еще не совсем разобрался.
1) У меня есть бинарник (консольный) + gui = как вызывать функции из cli
2) У меня есть GUI + расширяющие функционал .so (динамические библиотеки) = Прога делает расчет по функциям из библиотек.
Я просто не совсем понимаю как правильнее.
GUI + CLI + .so = идеальный вариант
То есть как бы на выбор что ли :rolleyes: ?!
Одним словом я хочу разобраться как послать в библиотеку переменные, она их обработала и вернула мне решение (это я так понимаю как раз гуй+бинарник).
А библиотека я так понимаю нужна... толку с нее вообще тогда?!
Litkevich Yuriy
Цитата(RazrFalcon @ 27.9.2010, 20:29) *
Как подключится из gui/cli к .so ?
это отдельная тема от QT CLI+GUI
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.