Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
VD
24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
1

Undefined reference to QWidget::resizeEvent(QPaintEvent*)

08.12.2016, 09:35. Показов 2999. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Все работало работало... И в какой то момент перестало. Добавил новый класс унаследованный от QFrame там переопределил virtual void resizeEvent(QPaintEvent *){} и в какой то момент появилось это, да еще 4 штуки:

undefined reference to QWidget::resizeEvent(QPaintEvent*)

добавил в 4 класса созданных мной и унаследованных от различных виджетов это
C++ (Qt)
1
protected: virtual void resizeEvent(QPaintEvent *){}
и все заработало.
Что за дела???

 Комментарий модератора 
Про оформление сообщений:
Правила именования тем и оформления сообщений в разделе Qt
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2016, 09:35
Ответы с готовыми решениями:

Undefined reference to QWidget::styleChange(and others)
Добрый день. g++ -Wl,-O1 -Wl,-rpath,/opt/qt5/lib -o Equalizer main.o mainwindow.o equalizer.o...

Undefined reference to `mylistview::mylistview(QWidget*)'
Пытаюсь переопределить виджет, но что-то делаю не так. 14:29:47: Выполняются этапы для проекта...

Undefined reference to
Qt5 minGW Вылетает куча ошибок ошибка: undefined reference to...

Undefined reference to `_imp
Продолжаю мучать проект monav-0.3. Пытаюсь скомпилировать его под винду (XP). Пытаюсь его...

7
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
08.12.2016, 09:46 2
В том и веселье, что ты переопределил метод. И наверняка вписал его в приватную секцию. Классы-наследники не могли пользоваться приватным методом папаши. Сделал его защищенным - открыл доступ наследникам, но по-прежнему оставил запрет вызова метода из классов, не имеющих отношения к твоему. Как-то так скорее всего было у тебя.
Немного ошибся - ты теперь добавил собственные методы в каждый из 4 классов. А по-хорошему нужно в базовом классе сделать этот метод защищенным, а не приватным. Тогда отпадет надобность в реализации этой функции в дочерних классах.

Добавлено через 3 минуты
Если все еще не ясно, выложи свою архитектуру классов и подпиши еще, в какой секции у каждого класса находится метод resizeEvent. Будем вместе разбираться.
1
VD
24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
08.12.2016, 11:53  [ТС] 3
Кода много, выложить не могу. Опишу так. После всего этого я вообще откатился назад. Есть 4 класса. два наследника от QDialog, один от QWidget и один от QPlainTextEdit. После того как я добавил пятый наследник от QFrame и попытался в нем переопределить resizeEvent начался хаос.

Типа того
Код
undefined reference to QWidget::resizeEvent(QPaintEvent*)
undefined reference to QFrame::resizeEvent(QPaintEvent*)
...

Удалил к черту пятый класс.. очистил сборку... удалил все файлы нафиг. Собираю проблема осталась. И исчезает только после того как я добавлею в ранее созданные классы ту самую resizeEvent. Без которой и раньше все работало...

Добавлено через 1 час 46 минут
Теперь даже в стандартном проекте MainWindow такая же шляпа
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
08.12.2016, 12:05 4
эм... Так! Еще раз и по порядку. У класса QWidget нет такого метода. Есть такой:
C++ (Qt)
1
    virtual void resizeEvent(QResizeEvent *);
Обрати внимание на тип параметра.

Если тебе нужно свое поведение, то переопределяй именно этот метод. Компилятор тебе логично ругается - ты в коде вызываешь наверняка resizeEvent, передавая в метод указатель на объект класса QPaintEvent, однако в хэдере у тебя у этих функций совсем другой параметр. И все начинает работать, когда ты эти функции объявляешь, что ты и сделал в самом начале. Но, очевидно, это не правильно.
1
VD
24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
08.12.2016, 14:05  [ТС] 5
Я же говорю компилятор после этого стал ругаться на все также, даже на пустой проект QMainWindow...
Позвал гуру(я на работе новичок) он тоже не понял что за фигня. Решили переустановить с Qt 5.5 на Qt 5.7
Проблема решилась
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
08.12.2016, 14:58 6
Цитата Сообщение от VD Посмотреть сообщение
Что за дела???
Скорее всего ошибка при сборке. Иногда такое бывает. Помогает очистка сборки.
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
08.12.2016, 15:15 7
C++ (Qt)
1
undefined reference to QWidget::resizeEvent(QPaintEvent*)
Точно в сборке? Меня смущает параметр...
0
VD
24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
08.12.2016, 15:24  [ТС] 8
Чистил сборку раз 12 и в ручную все нафиг удалял. Параметр не тот но дело то не в этом, говорю в пустом проекте та же самая ошибка была. Каким то чудесным образом сломался Qt... может как раз из за того что я попросил его скомпилировать с таким левым параметром
0
08.12.2016, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2016, 15:24
Помогаю со студенческими работами здесь

Undefined reference to _mkgmtime32
Qt 5.3.1 MinGW. Проект собирается только в Debug-версии, а если выбрать Release, то сборка...

Ошибка undefined reference to
Здравствуйте,столкнулся с проблемкой,никак не получается ее решить. Вот код: main: #include...

Undefined reference to QNetworkAccessManager
Помогите пожалуйста, начал Qt изучать. Просмотрел стандартный пример Http со скачиванием файла и...

Undefined reference to 'mclInitializeApplication_proxy'
Здравствуйте! В результате отладки проблема: "undefined reference to...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru