Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt 4.3.0] ошибка при компиляции, почему-то не объявлен QPushButton  
V
    Опции темы
anatox91
Дата 10.3.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



привет всем! компилирую код из книги
Код

#include <QApplication>
#include <APushButton.h>
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QPushButton *button = new QPushButton("Quit");
    QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
    button->show();
    return app.exec();
}

и при компиляции mingw пишет мне ошибки, что не объявлен QPushButton... скажите пожалуйста что я не так делаю? может инклюд не тот?


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
SABROG
Дата 10.3.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(anatox91 @ 10.3.2008,  19:35)
#include <APushButton.h>

А книга наверно отсканирована и распознана файнридером... Или у кого-то ручки кривые...

Код

#include <QPushButton.h>


Это сообщение отредактировал(а) SABROG - 10.3.2008, 19:41


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
anatox91
Дата 10.3.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



все, сам допер, подключил QPushButtonи заработало... странно почему в книге неправильно написано, ведь она 2007 года... вроде не старая...


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
JackYF
Дата 10.3.2008, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(SABROG @  10.3.2008,  18:41 Найти цитируемый пост)
.h

зачем ".h"?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SABROG
Дата 10.3.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(JackYF @ 10.3.2008,  23:26)
Цитата(SABROG @  10.3.2008,  18:41 Найти цитируемый пост)
.h

зачем ".h"?

Ну разницы то не будет, это все-равно, что вызывать программу как program, а не program.exe. В угловых скобках заключаются хидеры библиотек компилятора, в двойных кавычках хидеры твоей программы. Просто все привыкли делать так как их учили мануалы и книги smile , я так вообще не заморачиваюсь по поводу используемых компонентов и включаю только #include <QtGui>. Ну еще дополнительные модули типа:

QtNetwork
QtOpenGL
QtScript
QtSql
QtSvg
QtWebKit
QtXml
QtXmlPatterns
Phonon
Qt3Support
QtDesigner
QtUiTools
QtHelp
QtAssistant
QtTest
QAxContainer
QAxServer
QtDBus


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
nickless
Дата 11.3.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 13
Всего: 181



Цитата(SABROG @  10.3.2008,  21:49 Найти цитируемый пост)
Ну разницы то не будет, это все-равно, что вызывать программу как program, а не program.exe

Под никсами надо по крайней мере с маленькой буквы писать, а вообще раз тролли так решили значит так надо, в будущих версиях Qt хедеры с .h могут вообще убрать.
Цитата(What's New in Qt 4)

Include Syntax

The syntax for including Qt class definitions has become

    #include <QClassName>

For example:

    #include <QString>
    #include <QApplication>
    #include <QSqlTableModel>

This is guaranteed to work for any public Qt class. The old syntax,

    #include <qclassname.h>

still works, but we encourage you to switch to the new syntax.



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
anatox91
Дата 11.3.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



я как раз подключал <QPushButton>  smile  да и так удобнее - просто имя класса и все... 


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Любитель
Дата 11.3.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(SABROG @  10.3.2008,  23:49 Найти цитируемый пост)
program, а не program.exe

Это совсем другое. К хейдерам никакие .h, .hpp, .hh автоматом никто подставлять не будет. А кутешные хейдеры с аш-ками вроде как депрекатед.

Цитата(SABROG @  10.3.2008,  23:49 Найти цитируемый пост)
включаю только #include <QtGui>

А время компиляции?



--------------------
PM MAIL ICQ Skype   Вверх
bsa
Дата 11.3.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Цитата(Любитель @ 11.3.2008,  18:05)
Цитата(SABROG @  10.3.2008,  23:49 Найти цитируемый пост)
включаю только #include <QtGui>

А время компиляции?

PCH (precompiled headers) еще никто не отменял.  smile 
PM   Вверх
SABROG
Дата 11.3.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Любитель @  11.3.2008,  18:05 Найти цитируемый пост)
депрекатед

Вот нельзя сказать просто "анахронизм" или "устаревшее", пришлось в переводчик лезть  smile 

Нашел вот чего, правда так и не понял где и в каких случаях применимы те или иные вариации, тайна покрытая мраком...
Цитата

Директива #include

Директива #include заставляет компилятор прочитать и скомпилировать указаный исходный файл. Требование "включаить файл" рассматривается препроцессором как требование заменить строку с этой командой на содержимое указанного файла. Полученный комбинированный текст обрабатывается транслятором, который трактует его как единый файл с текстом программы. Для записи этой дириктивы используется слудющая общая форма:

#include "имя_файла"

#include <имя_файла>

Имя исходного файла, подлежащего прочтению, должно быть заключено в двойные кавычки или угловые скобки. Если имя файла заключено в угловые скобки, то поиск файла будет осуществляться способом, определенным создателем компилятора. Часто это означает, что поиск выполняется в некотором специальном разделе (каталоге), выделенном для заголовочных (подстановочных, включаемых) файлов. Имя и путь этого раздела может задавать пользователь в настройках компилятора. Если же имя файла заключено в кавычки, поиск файла выполняется другим способом, зависящим от конкретной реализации. Во многих случаях это означает поиск в текущем рабочем каталоге. Если заданный файл не найден, поиск повторяется с использованием первого способа, как если бы имя файла было бы заключено в угловые скобки. Если и здесь требуемый файл не найден, то препроцессор выдаст сообщение об ошибке.

Помимо включения файлов, Си-программы используют директиву #include для включеня заголовков. В языке Си определен набор стандартных заголовков, которые представляют информацию, необходимыю для различных библиотек (под заголовком может подразумеваться файл, но это совсем не обязательно). Таким образом, заголовок - это просто абстракция, которая гарантирует включение соответсвующей информации. Однако на практике C-заголовки почти всегда являются файлами, а имена заголовков - действительными именами файлов. Для языка C++ ситуация иная. Все имена C++-заголовков представляют собой стандартные идентификаторы, которые компилятор может преобразовать в имена файлов или обработать каким-либо другим способом. А поскольку C++-заголовки не являются именами файлов, они не имеют расширения .h.

Операторы #include могут быть вложенными внутри других включаемых файлов. Директива #include не должна оканчиваться точкой с запятой.



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 11.3.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Всмысле? Ты про кавычки и угловые скобки? Если да, то:
  -- угловые скобки - поиск файла по инклюд-директориям, задаваемых тем или иным компилеро-зависимым способом.
  -- кавычки - поиск файла в текущей (относительно текущей) директории и далее там же, где и в случае угловых скобок.


--------------------
PM MAIL ICQ Skype   Вверх
SABROG
Дата 11.3.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Любитель @ 11.3.2008,  18:45)
Всмысле? Ты про кавычки и угловые скобки? Если да, то:
  -- угловые скобки - поиск файла по инклюд-директориям, задаваемых тем или иным компилеро-зависимым способом.
  -- кавычки - поиск файла в текущей (относительно текущей) директории и далее там же, где и в случае угловых скобок.

Да нет, это я знал. Я про расширение. Там в цитате внизу написано. Т.е. компилятор C++ не считает include файлом, а считает абстракцией, так вот мне интересно как выглядит этот второй случай, когда хидер не является файлом...


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
JackYF
Дата 11.3.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(SABROG @  11.3.2008,  17:56 Найти цитируемый пост)
как выглядит этот второй случай, когда хидер не является файлом...


ну, примеров на практике пока что нет smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 16.3.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(SABROG @  11.3.2008,  18:56 Найти цитируемый пост)
 Т.е. компилятор C++ не считает include файлом, а считает абстракцией, так вот мне интересно как выглядит этот второй случай, когда хидер не является файлом...

Это гипотетический вариант, предусмотренный священным стандартом smile В природе не встречается...


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1183 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.