24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
|
||||||||||||
1 | ||||||||||||
Undefined reference to QWidget::resizeEvent(QPaintEvent*)08.12.2016, 09:35. Показов 2999. Ответов 7
Метки нет (Все метки)
Все работало работало... И в какой то момент перестало. Добавил новый класс унаследованный от QFrame там переопределил virtual void resizeEvent(QPaintEvent *){} и в какой то момент появилось это, да еще 4 штуки:
undefined reference to QWidget::resizeEvent(QPaintEvent*) добавил в 4 класса созданных мной и унаследованных от различных виджетов это
Что за дела???
0
|
08.12.2016, 09:35 | |
Ответы с готовыми решениями:
7
Undefined reference to QWidget::styleChange(and others) Undefined reference to `mylistview::mylistview(QWidget*)' Undefined reference to Undefined reference to `_imp |
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
|
|
08.12.2016, 09:46 | 2 |
В том и веселье, что ты переопределил метод. И наверняка вписал его в приватную секцию. Классы-наследники не могли пользоваться приватным методом папаши. Сделал его защищенным - открыл доступ наследникам, но по-прежнему оставил запрет вызова метода из классов, не имеющих отношения к твоему. Как-то так скорее всего было у тебя.
Немного ошибся - ты теперь добавил собственные методы в каждый из 4 классов. А по-хорошему нужно в базовом классе сделать этот метод защищенным, а не приватным. Тогда отпадет надобность в реализации этой функции в дочерних классах. Добавлено через 3 минуты Если все еще не ясно, выложи свою архитектуру классов и подпиши еще, в какой секции у каждого класса находится метод resizeEvent. Будем вместе разбираться.
1
|
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 нет такого метода. Есть такой:
Если тебе нужно свое поведение, то переопределяй именно этот метод. Компилятор тебе логично ругается - ты в коде вызываешь наверняка resizeEvent, передавая в метод указатель на объект класса QPaintEvent, однако в хэдере у тебя у этих функций совсем другой параметр. И все начинает работать, когда ты эти функции объявляешь, что ты и сделал в самом начале. Но, очевидно, это не правильно.
1
|
24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
|
|
08.12.2016, 14:05 [ТС] | 5 |
Я же говорю компилятор после этого стал ругаться на все также, даже на пустой проект QMainWindow...
Позвал гуру(я на работе новичок) он тоже не понял что за фигня. Решили переустановить с Qt 5.5 на Qt 5.7 Проблема решилась
0
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
|
||||||
08.12.2016, 15:15 | 7 | |||||
0
|
24 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 160
|
|
08.12.2016, 15:24 [ТС] | 8 |
Чистил сборку раз 12 и в ручную все нафиг удалял. Параметр не тот но дело то не в этом, говорю в пустом проекте та же самая ошибка была. Каким то чудесным образом сломался Qt... может как раз из за того что я попросил его скомпилировать с таким левым параметром
0
|
08.12.2016, 15:24 | |
08.12.2016, 15:24 | |
Помогаю со студенческими работами здесь
8
Undefined reference to _mkgmtime32 Ошибка undefined reference to Undefined reference to QNetworkAccessManager Undefined reference to 'mclInitializeApplication_proxy' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |