16:40

Qt

Добрый день.
Задали создать графический калькулятор(не в консоли). Т.к. работаю в Ubuntu установил Qt creator. Нашел учебник, пробовал скомпилировать в консоли cpp файл, выдавал не понятную ошибку.
Вопрос: возможно ли компилирование данных программ в консоли и можно ли с помощью стандартных средств языка создать графическое приложение?
Заранее спасибо!)

@темы: C++, *nix

Комментарии
16.11.2014 в 16:51

возможно.
16.11.2014 в 16:55

А не подскажете как это сделать?
16.11.2014 в 16:59

Mik94, В Ubuntu? Может оказаться проще попробовать С++ и wxWidgets (Для создания окошек можно попробовать wxFormBuilder. )
16.11.2014 в 17:02

Попробуем! Спасибо)
16.11.2014 в 17:16

>> с помощью стандартных средств языка создать графическое приложение?

Нет. Стандаратная библиотеа C++ не содержит ничего связанного с графическим интерфейсом.

Используйте Qt раз уж вы установили QtCreator

qt-project.org/doc/qt-4.8/widgets-calculator.ht...
16.11.2014 в 17:28

Shambler,

> Вопрос: возможно ли компилирование данных программ в консоли
> А не подскажете как это сделать?

говорят, что-то подобное работает...

g++ -Wl,-O1 -Wl,-rpath,/opt/qt_47x/lib -o main main.o -L/opt/qt_47x/lib -L/usr/X11R6/lib -lQtDeclarative -L/opt/qt_47x/lib -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore -lpthread
16.11.2014 в 17:38

Работать то работает. Но это не означает что графическая программа создается стандартными средствами языка. Тут как минимум идёт линковка с Qt. Перетащите собранный бинарник на машину, на которой не установлена Qt - и фиг он запустится.

>> -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore

Из всего этого для минимальной графической софтины, использующей Qt для построения интерфейса пользователя, нужны только "-lQtGui -lQtCore".
16.11.2014 в 17:50

Сразу вопрос по коду.
Код взят из учебника по Qt4.8.

При компиляции файла .pro выдает ошибки:
1. variable 'QApplication app' has initializer but incomplete type QApplication(argc, argv);
^
2. 'QLabel' was not declared in this scope QLabel lbl("Hello, World!");
3. lbl was not declarete in this scope lbl.show();
^
16.11.2014 в 18:03

> Перетащите собранный бинарник на машину, на которой не установлена Qt - и фиг он запустится.
-static не поможет?

Но это не означает что графическая программа создается стандартными средствами языка.
спасибо, я знаю. Просто у топикстартера сразу два вопроса.
P.S. Xlib - таки стандартное средство языка: dfe3300.karelia.ru/koi/posob/X/osnov.htm
16.11.2014 в 18:10

Trotil

> -static не поможет?

Для этого самую Qt перед этим надо собратить как статическую библиотеку (не самая простая задача, птстоянно насчёт этого вопросы на профильных форумах появляются).

>> P.S. Xlib - таки стандартное средство языка

Не совсем :) 1. Для винды его нет (а стандартные средства подразумеваю то что они будут "почти" одинаково компилироваться на рахных платформах). 2. На машине с Linux-based системой так же может не бытьустановлено Xlib (на каком-то-нить сервере, крутящем что-то веб-ориентированное) - но это уже частный случай.
16.11.2014 в 18:14

Mik94, как именно компилируете? Из консоли, вызовом qmake а затем make - проблем не должно быть, показывайте main.cpp и pro-файл.
Если напрямую через g++ ... - показывайте строку выхова компилятора и полный его выхлоп.
16.11.2014 в 18:17

Через qmake -project, qmake, make
pro-файл:

А main-файл, я скидывал до этого.
16.11.2014 в 18:26

Проверил. Работает всею. Вот выхлоп консоли:


16.11.2014 в 19:08

У меня почему-то выдал ошибку об отсутствии файла QtGui..(
16.11.2014 в 19:17

Добавьте в .pro файл следующее:

QT += core gui

хотя у меня и без него собралось и запустилось

Скопируйте полный вовд компилятора о процессе сборки о шибке.
17.11.2014 в 03:36

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o Main.o Main.cpp
Main.cpp:1:17: fatal error: QtGui: нет такого файла или каталога
17.11.2014 в 09:31

выполни
ls -l /usr/include/qt4/
17.11.2014 в 14:00

Получилось. Спасибо большое за помощь!!! Очень благодарен!)