Qt (не находит include)
Модератор: Модераторы разделов
-
kkkggg
- Сообщения: 100
Qt
#include <qapplication.h>
#include <qlabel.h>
int main (int argc, char *argv[])
{
QAplication app(argc, argv);
QLabel *label = new QLabel("Hello, Qt!!", 0);
app.setMainWidget(label);
label->show();
return app.exec();
}
diman@localhost ~/cpp/qt1 $ c++ qt1.cpp //<==== Сдесь правельно?
qt1.cpp:1:26: qapplication.h: No such file or directory
qt1.cpp:2:20: qlabel.h: No such file or directory
qt1.cpp: In function `int main(int, char**)':
qt1.cpp:5: error: `QAplication' undeclared (first use this function)
qt1.cpp:5: error: (Each undeclared identifier is reported only once for each function it appears in.)
qt1.cpp:5: error: expected `;' before "app"
qt1.cpp:6: error: `QLabel' undeclared (first use this function)
qt1.cpp:6: error: `label' undeclared (first use this function)
qt1.cpp:6: error: `QLabel' has not been declared
qt1.cpp:7: error: `app' undeclared (first use this function)
qt1.cpp:10:2: warning: no newline at end of file
Почему не видим заголовочные файлы?
реально они есть: /usr/include/qt4/Qt
#include <qlabel.h>
int main (int argc, char *argv[])
{
QAplication app(argc, argv);
QLabel *label = new QLabel("Hello, Qt!!", 0);
app.setMainWidget(label);
label->show();
return app.exec();
}
diman@localhost ~/cpp/qt1 $ c++ qt1.cpp //<==== Сдесь правельно?
qt1.cpp:1:26: qapplication.h: No such file or directory
qt1.cpp:2:20: qlabel.h: No such file or directory
qt1.cpp: In function `int main(int, char**)':
qt1.cpp:5: error: `QAplication' undeclared (first use this function)
qt1.cpp:5: error: (Each undeclared identifier is reported only once for each function it appears in.)
qt1.cpp:5: error: expected `;' before "app"
qt1.cpp:6: error: `QLabel' undeclared (first use this function)
qt1.cpp:6: error: `label' undeclared (first use this function)
qt1.cpp:6: error: `QLabel' has not been declared
qt1.cpp:7: error: `app' undeclared (first use this function)
qt1.cpp:10:2: warning: no newline at end of file
Почему не видим заголовочные файлы?
реально они есть: /usr/include/qt4/Qt
-
mops
- Сообщения: 172
- ОС: Ubuntu Feisty
Re: Qt
А откуда по-твоему компилятор узнает, где их искать?
И что тебе мешает пользоваться qmake и make?
И что тебе мешает пользоваться qmake и make?
-
kkkggg
- Сообщения: 100
Re: Qt
Вот, что ввожу и вот что выводит...
diman@localhost ~/cpp/qt1 $ gmake -project qt1.cpp
# GNU Make 3.80
# Copyright © 2002 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
gmake: Цель `qt1.cpp' не требует выполнения команд.
# База данных Make, напечатана Sun Jan 28 02:12:44 2007
# Переменные
# автоматическая
<D = $(patsubst %/,%,$(dir $<))
# автоматическая
?F = $(notdir $?)
# по умолчанию
CWEAVE = cweave
# определена в среде
MC_SID = 10178
# определена в среде
GTK_RC_FILES = /etc/gtk/gtkrc:/home/diman/.gtkrc:/home/diman/.kde3.5/share/config/gtkrc
# автоматическая
@D = $(patsubst %/,%,$(dir $@))
# определена в среде
XAUTHORITY = /home/diman/.Xauthority
# автоматическая
@F = $(notdir $@)
# по умолчанию
CURDIR := /home/diman/cpp/qt1
# Make-файл
SHELL = /bin/sh
# по умолчанию
RM = rm -f
# по умолчанию
CO = co
# определена в среде
_ = /usr/bin/gmake
# по умолчанию
PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F
# автоматическая
?D = $(patsubst %/,%,$(dir $?))
# определена в среде
XDG_CONFIG_DIRS = /usr/kde/3.5/etc/xdg
# по умолчанию
OUTPUT_OPTION = -o $@
# определена в среде
OPENGL_PROFILE = xorg-x11
# определена в среде
LESSOPEN = |lesspipe.sh %s
# по умолчанию
COMPILE.cpp = $(COMPILE.cc)
# Make-файл
MAKEFILE_LIST :=
# определена в среде
HISTCONTROL = ignorespace
# по умолчанию
LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
KONSOLE_DCOP = DCOPRef(konsole-10173,konsole)
# определена в среде
XDG_DATA_DIRS = /usr/kde/3.5/share:/usr/share
# определена в среде
DBUS_SESSION_BUS_ADDRESS = unix:abstract=/tmp/dbus-J6xuXGjvx3,guid=1dcabb45cba0ea50a121f90842402600
# определена в среде
KONSOLE_DCOP_SESSION = DCOPRef(konsole-10173,session-1)
# по умолчанию
CC = cc
# определена в среде
INFOPATH = /usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.16.1/info:/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/info
# по умолчанию
CHECKOUT,v = +$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)
# определена в среде
USER = diman
# определена в среде
QMAKESPEC = linux-g++
# по умолчанию
CPP = $(CC) -E
# по умолчанию
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
PATH = /usr/kde/3.5/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.4.4:/usr/kde/3.5/bin:/usr/qt/3/bin:/usr/games/bin
# по умолчанию
LD = ld
# по умолчанию
TEXI2DVI = texi2dvi
# определена в среде
XCURSOR_THEME = default
# определена в среде
SESSION_MANAGER = local/localhost:/tmp/.ICE-unix/9322
# по умолчанию
COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)
# по умолчанию
ARFLAGS = rv
# по умолчанию
LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
WINDOWID = 41943045
# по умолчанию
COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c
# по умолчанию
LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
# по умолчанию
LINT = lint
# по умолчанию
YACC.y = $(YACC) $(YFLAGS)
# по умолчанию
AR = ar
# определена в среде
LC_NUMERIC = POSIX
# определена в среде
GTK2_RC_FILES = /etc/gtk-2.0/gtkrc:/home/diman/.gtkrc-2.0:/home/diman/.kde3.5/share/config/gtkrc-2.0
# по умолчанию
TANGLE = tangle
# по умолчанию
GET = get
# автоматическая
%F = $(notdir $%)
# определена в среде
KDEDIRS = /usr/kde/3.5:/usr:/usr/local
# определена в среде
DISPLAY = :0.0
# по умолчанию
COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# по умолчанию
CTANGLE = ctangle
# по умолчанию
.LIBPATTERNS = lib%.so lib%.a
# по умолчанию
LINK.C = $(LINK.cc)
# определена в среде
PWD = /home/diman/cpp/qt1
# по умолчанию
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)
# по умолчанию
PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F
# определена в среде
PKG_CONFIG_PATH = /usr/qt/3/lib/pkgconfig
# по умолчанию
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
G_BROKEN_FILENAMES = 1
# определена в среде
MANPATH = /usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.16.1/man:/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/man:/usr/qt/3/doc/man
# по умолчанию
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)
# определена в среде
HOME = /home/diman
# определена в среде
LOGNAME = diman
# определена в среде
G_FILENAME_ENCODING = UTF-8
# определена в среде
KDE_FULL_SESSION = true
# автоматическая
^D = $(patsubst %/,%,$(dir $^))
# определена в среде
HOSTNAME = localhost
# по умолчанию
YACC = yacc
# определена в среде
GCC_SPECS =
# определена в среде
MAKELEVEL := 0
# определена в среде
COLORTERM =
# по умолчанию
MAKE = $(MAKE_COMMAND)
# по умолчанию
MAKECMDGOALS := qt1.cpp
# определена в среде
SHLVL = 6
# определена в среде
CONFIG_PROTECT_MASK = /etc/gconf /etc/terminfo /etc/texmf/web2c
# по умолчанию
AS = as
# по умолчанию
PREPROCESS.S = $(CC) -E $(CPPFLAGS)
# по умолчанию
COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# по умолчанию
MAKE_VERSION := 3.80
# определена в среде
KDE_MULTIHEAD = false
# по умолчанию
FC = f77
# определена в среде
LESS = -R -M --shift 5
# автоматическая
%D = $(patsubst %/,%,$(dir $%))
# по умолчанию
WEAVE = weave
# по умолчанию
MAKE_COMMAND := gmake
# по умолчанию
LINK.cpp = $(LINK.cc)
# по умолчанию
F77 = $(FC)
# определена в среде
OLDPWD = /home/diman/cpp
# по умолчанию
.VARIABLES :=
# по умолчанию
PC = pc
# определена в среде
CVS_RSH = ssh
# автоматическая
*F = $(notdir $*)
# по умолчанию
COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)
# определена в среде
PYTHONPATH = /usr/lib/portage/pym
# по умолчанию
LEX = lex
# Make-файл
MAKEFLAGS = rp
# определена в среде
MFLAGS = -rp
# автоматическая
*D = $(patsubst %/,%,$(dir $*))
# определена в среде
MAIL = /var/mail/diman
# по умолчанию
LEX.l = $(LEX) $(LFLAGS) -t
# автоматическая
+D = $(patsubst %/,%,$(dir $+))
# по умолчанию
COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c
# автоматическая
+F = $(notdir $+)
# по умолчанию
M2C = m2c
# определена в среде
GDK_USE_XFT = 1
# определена в среде
MC_TMPDIR = /tmp/mc-diman
# по умолчанию
MAKEFILES :=
# по умолчанию
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# автоматическая
<F = $(notdir $<)
# по умолчанию
CXX = g++
# по умолчанию
COFLAGS =
# определена в среде
EDITOR = /bin/nano
# определена в среде
PAGER = /usr/bin/less
# определена в среде
PRELINK_PATH_MASK = /usr/lib/gstreamer-0.10:/usr/lib/gstreamer-0.8
# по умолчанию
COMPILE.C = $(COMPILE.cc)
# автоматическая
^F = $(notdir $^)
# по умолчанию
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
# по умолчанию
LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# по умолчанию
SUFFIXES :=
# определена в среде
GS_LIB = /home/diman/.fonts
# по умолчанию
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# по умолчанию
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
# определена в среде
CONFIG_PROTECT = /usr/share/X11/xkb /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown /usr/share/config
# определена в среде
QTDIR = /usr/qt/3
# по умолчанию
MAKEINFO = makeinfo
# по умолчанию
LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# по умолчанию
TEX = tex
# определена в среде
LANG = ru_RU.KOI8-R
# определена в среде
TERM = xterm
# по умолчанию
F77FLAGS = $(FFLAGS)
# по умолчанию
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
# variable set hash-table stats:
# Load=137/1024=13%, Rehash=0, Collisions=17/151=11%
# Каталоги
# . (устройство 769, inode 2019187): 3 файлов,нет недостижимых целей.
# 3 файлов,нет impossibilities in 1 directories.
# Implicit Rules
# Неявных правил нет.
# Значения переменных особенные для маски
# Нет значений переменных особенных для маски
# Файлы
# Не является целью:
.SUFFIXES:
# Поиск неявных правил не производился.
# Время изменения ни разу не проверялось.
# Файл не был обновлен.
# Не является целью:
Makefile:
# makefile по умолчанию или из MAKEFILES.
# Производился поиск неяв# Файл не существует.
# Файл был обновлен.
# Попытка обновления безуспешна.
# Не является целью:
makefile:
# makefile по умолчанию или из MAKEFILES.
# Производился поиск неявных правил
# Файл не существует.
# Файл был обновлен.
# Попытка обновления безуспешна.
# Не является целью:
.DEFAULT:
# Поиск неявных правил не производился.
# Время изменения ни разу не проверялось.
# Файл не был обновлен.
# Не является целью:
qt1.cpp:
# Цель, вызываемая из командной строки.
# Производился поиск неявных правил
# Время последнего изменения 2007-01-27 01:26:51
# Файл был обновлен.
# Успешно обновлено.
# Не является целью:
ject:
# Поиск неявных правил не производился.
# Файл очень старый.
# Файл был обновлен.
# Успешно обновлено.
# Не является целью:
GNUmakefile:
# makefile по умолчанию или из MAKEFILES.
# Производился поиск неявных правил
# Файл не существует.
# Файл был обновлен.
# Попытка обновления безуспешна.
# files hash-table stats:
# Load=7/1024=1%, Rehash=0, Collisions=0/17=0%
# Пути поиска VPATH
# Не определен путь поиска `vpath'.
# Не определен общий (переменная `VPATH') путь поиска.
# Печать базы данных Make завершена Sun Jan 28 02:12:44 2007
Что сдесь не так, что за vpath?
-
mops
- Сообщения: 172
- ОС: Ubuntu Feisty
Re: Qt
Чувствуешь разницу между gmake и qmake? 
-
kkkggg
- Сообщения: 100
-
Liksys
- Сообщения: 2910
Re: Qt
надо компилить командами:
qmake -project
qmake
make
qmake -project
qmake
make
-
biolim
- Сообщения: 142
Re: Qt
Можно и вот так попробовать
g++ -o exec source.cpp $(pkgconfig --cflags --libs qt-mt)
g++ -o exec source.cpp $(pkgconfig --cflags --libs qt-mt)
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
-
biolim
- Сообщения: 142
Re: Qt
Смысл такой что если понадобится использовать другие опции компиляции.
-
mops
- Сообщения: 172
- ОС: Ubuntu Feisty
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Qt
До кучи, scons куда удобнее qmake-а. Правда когда я его в последний раз пользовал, с Qt 4 у него были проблемы, в принципе наверное сейчас уже решённые.
-
elf74
- Сообщения: 482
- Статус: Линуксоид-Самовар :)
- ОС: Mandriva Power Pack 2008.0 LCE
Re: Qt
Кто-нибудь подскажет почему после компилирования этого кода:
#include <qapplication.h>
#include <qlabel.h>
int main (int argc, char *argv[])
{
QAplication app(argc, argv);
QLabel *label = new QLabel("Hello, Qt!!", 0);
app.setMainWidget(&label);
label->show();
return app.exec();
}
командами:
qmake -project
qmake
make
на стадии исполнения команды make выходит сообщение что setMainWidget не является членом класса QApplication...
P.S. проблема решается если закомментировать строку app.setMainWidget(&label); но на сколько я понимаю этого делать нельзя...
#include <qapplication.h>
#include <qlabel.h>
int main (int argc, char *argv[])
{
QAplication app(argc, argv);
QLabel *label = new QLabel("Hello, Qt!!", 0);
app.setMainWidget(&label);
label->show();
return app.exec();
}
командами:
qmake -project
qmake
make
на стадии исполнения команды make выходит сообщение что setMainWidget не является членом класса QApplication...
P.S. проблема решается если закомментировать строку app.setMainWidget(&label); но на сколько я понимаю этого делать нельзя...
-
Liksys
- Сообщения: 2910
Re: Qt
Потому: что в Qt4 нет метода setMainWidget(), он считается устаревшим. Вообще, почитай assistant, там все очень подробно написано.
-
oakhead
- Сообщения: 49
Re: Qt
Я как-то не уверен, что QLabel можно использовать в качестве главного окна приложения.

-
Alxn1
- Сообщения: 402
- Статус: Красноглазик со стажем
- ОС: Mavericks
Re: Qt
Ну, оно же, вроде, от QWidget наследуется где-то там. Так что, почему бы и нет.
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
-
elf74
- Сообщения: 482
- Статус: Линуксоид-Самовар :)
- ОС: Mandriva Power Pack 2008.0 LCE
Re: Qt
Хорошо, но почему тогда в туториалах этот пример фигурирует как самый первый? :-) способный оценить (при комиляции) правильно установлена Qt или нет...
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.