Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для porshe
57 / 51 / 42
Регистрация: 18.07.2014
Сообщений: 194

Не компилируется код-пример из книги

16.10.2014, 17:15. Показов 1736. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Читаю книгу "Бланшет Ж., Саммерфилд М. Qt 4. Программирование GUI на C++ (2-е издание, 2008)".
Есть вот такой пример:

файл main.cpp
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
#include <QApplication>
#include "gotocelldialog.hpp"
 
int main( int ac, char **av )
{
    QApplication app( ac, av );
    GoToCellDialog *dialog = new GoToCellDialog;
    dialog->show();
    return app.exec();
}


Файл gotocelldialog.hpp
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef GOTOCELLDIALOG_HPP
#define GOTOCELLDIALOG_HPP
 
#include <QDialog>
 
#include "ui_gotocelldialog.h"
 
class GoToCellDialog : public QDialog, public Ui::GoToCellDialog
{
    Q_OBJECT
 
public:
    GoToCellDialog( QWidget *parent = 0 );
 
private slots:
    void on_lineEdit_textChanged();
};
 
#endif // GOTOCELLDIALOG_HPP


Файл gotocelldialog.cpp

Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "gotocelldialog.hpp"
 
 
GoToCellDialog :: GoToCellDialog( QWidget *parent ):
    QDialog( parent )
{
    setupUi( this );
    QRegExp regExp( "[A-Za-z][1-9][0-9]{0,2}" );
    lineEdit->setValidator( new QRegExpValidator( regExp, this) );
 
    connect( buttonBox, SIGNAL(accepted()), this, SLOT(accept()) );
    connect( buttonBox, SIGNAL(rejected()), this, SLOT(reject()) );
 
}
 
void GoToCellDialog :: on_lineEdit_textChanged()
{
    (buttonBox->button(QDialogButtonBox::Ok))->setEnabled(lineEdit->hasAcceptableInput() );
}


( Так же имеется файл - gotocelldialog.ui - форма, нарисованная в Qt Designer )

При сборке проекта выходят такие ошибки:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
gotocelldialog.cpp:-1: In member function 'void GoToCellDialog::on_lineEdit_textChanged()'
 
gotocelldialog.cpp:20: error: invalid use of incomplete type 'class QPushButton'
     (buttonBox->button(QDialogButtonBox::Ok))->setEnabled(lineEdit->hasAcceptableInput() );
                                              ^
 
/usr/include/qt5/QtWidgets/QDialog:1: In file included from /usr/include/qt5/QtWidgets/QDialog:1:0,
 
/home/roma/Desktop/Coding/Программы C++/QT/tut/untitled/gotocelldialog.hpp:4: from ../untitled/gotocelldialog.hpp:4,
 
gotocelldialog.cpp:3: from ../untitled/gotocelldialog.cpp:3:
/usr/include/qt5/QtWidgets/qdialog.h:50: error: forward declaration of 'class QPushButton'
 class QPushButton;
       ^
Что делать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2014, 17:15
Ответы с готовыми решениями:

Не компилируется код из книги Макса Шлее
Здравствуйте. Пытаюсь изучить Qt по книге Макса Шлее &quot;Qt 4.8. Проффессиональное программирование&quot;. В книге, в качестве...

Небезопасный код: пример из книги не компилируется
Учу с# по книге Шилдта, в разделе про небезопасный код есть примеры работы с указателями, однако данный код не компилируется в Visual...

Пример с книги не компилируется!
Павловская Т.С. Пример (программа печатает таблицу значений функции г/=х2+1 во введенном диапазоне): ...

4
Заблокирован
16.10.2014, 17:48
В таких случаях выкладывают архив с программкой, т.к. гадать, какой у тебя там код - не благодарное дело
0
 Аватар для porshe
57 / 51 / 42
Регистрация: 18.07.2014
Сообщений: 194
16.10.2014, 17:59  [ТС]
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
В таких случаях выкладывают архив с программкой, т.к. гадать, какой у тебя там код - не благодарное дело
Вот.

Добавлено через 57 секунд

Не по теме:



-THE_MASTER666-, разве тех исходников, что я выложил ранее не достаточно?

0
Заблокирован
16.10.2014, 18:09
Лучший ответ Сообщение было отмечено porshe как решение

Решение

В файле Dialog.h поправь убери class PushButton; и добавь #include <QPushButton>
вот так должно быть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef QDIALOG_H
#define QDIALOG_H
 
#include <QtWidgets/qwidget.h>
#include <QPushButton>
 
QT_BEGIN_NAMESPACE
 
class QDialogPrivate;
 
class Q_WIDGETS_EXPORT QDialog : public QWidget
{
...
Добавлено через 1 минуту
О...й )))))) автоматический поправил файл Qt, так не должно быть ))) Ща погоди

Добавлено через 2 минуты
Ухаха...погорячился я с первым постом
Просто добавь #include <QPushButton> в gotocelldialog.hpp и твоя проблема исчезнет

Добавлено через 2 минуты
Цитата Сообщение от porshe Посмотреть сообщение
THE_MASTER666-, разве тех исходников, что я выложил ранее не достаточно?
Достаточно, но лень в них вчитываться. Если у тебя проект из грубо говоря пары строк, то намного быстрее будет понять в чём проблема, просто скомпилировав его, нежели читать тексты. Если проект огромный или секртеный, то тут уж никуда не денешься.
1
 Аватар для porshe
57 / 51 / 42
Регистрация: 18.07.2014
Сообщений: 194
16.10.2014, 18:33  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.10.2014, 18:33
Помогаю со студенческими работами здесь

Не компилируется пример из книги: Undefined reference
Добрый день. Переписал программу с книги, а она не компилируется. В чем может быть ошибка. Текст проги: #include &lt;stdio.h&gt; ...

Не компилируется пример с использованием boost из книги
Visual Studio 10, Windows 7. Решил попробовать использовать boost. Выбрал пример 10.19 чтения содержимого каталога из книги...

Метка записи Suit не определена. Пример из книги не компилируется
Всем привет. Читаю книгу про конкурентность и параллелизм в .NET, там примеры на F# и C#. Решил освоить F#. Пишу пример из книги....

Не компилируется код примера из книги
/*Списал код с книги. Visio 2012 не может его даже скомпилировать, а GCC не выводит результат(аварийно завершается программа), подскажите в...

Простой пример из книги. Объяснить, почему код выдает такие результаты
Коллеги, привожу простой пример из книги Страуструппа. #include &lt;iostream.h&gt; #include &lt;conio.h&gt; void f(int a){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru