Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 70
1

Как вызвать updateGL() из другого класса?

14.04.2017, 21:17. Показов 810. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть два класса Draw(наследует от QGLWidget) и Calc(наследует QWidget) в разных файлах. Создал виджет, на него всунул еще один и через Promote связал c Draw, при запуске все выводит, Все работает. Мне надо как-то вызывать перерисовку после расчетов в классе Calc. Пытался подружить их и вызывать через область видимости, но выдает ошибку
error: cannot call member function 'virtual void QGLWidget::updateGL()' without object Draw::updateGL();
Подскажите как выкрутиться из ситуации?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2017, 21:17
Ответы с готовыми решениями:

Как вызвать метод из другого класса
Есть класс Player, в нем есть метод "Shoot", как из него вызвать метод BCheck из класса...

Как вызвать форму из другого класса
Т.е. есть один класс, в нем Myform mf = new Myform(); ... А в другом классе я хочу скажем...

Как вызвать метод из другого класса?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Как вызвать на исполнение функцию из другого класса
Доброго времени суток господа программисты ! Вопрос вот в чём ! Есть форма приложения и...

8
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
15.04.2017, 03:55 2
В коннекте поменяй четвёртый параметр с QGLWidget::updateGL() на Draw::updateGL()
0
1 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 70
15.04.2017, 16:36  [ТС] 3
Не получается. Вызываю из класса Calc так connect(timer,SIGNAL(timeout()),this,SLOT(Draw::up())); Оно не видит слот.
QObject::connect: No such slot Calc:: Draw::updateGL()
QObject::connect: (receiver name: 'Calc')

Добавлено через 47 минут
И даже когда я вызваю Draw::updateGL();, тоже самое
0
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
16.04.2017, 05:16 4
Создай сигнал void newData(): в классе Calc. Соедини
connect(calc,SIGNAL(newData()),draw,SLOT(updateGL()));
Кричи emit newData(); после успешных перерасчетов.
0
109 / 108 / 74
Регистрация: 18.11.2013
Сообщений: 304
16.01.2019, 17:09 5
icpu, у меня после посылки сигнала newData в слот updateGL программа не приходит. Не подскажите, в чем может быть проблема?
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
16.01.2019, 17:36 6
Запиши строку коннекта по-другому и сам(с помощью компилятора) увидишь, где ошибка:
C++ (Qt)
1
connect(calc, &Calc::newData, draw, &Draw::updateGL);
Доку не читал. Рискну предположить, что слот в базовом классе не имеет реализации. И в Draw ты его не переопределил.
1
109 / 108 / 74
Регистрация: 18.11.2013
Сообщений: 304
16.01.2019, 17:42 7
Горбаг, не, updateGL определен
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
16.01.2019, 18:34 8
Тогда оба класса в студию. Место коннета - тоже. И указать номер строки для удобства, чтобы мы долго не гадали.
0
109 / 108 / 74
Регистрация: 18.11.2013
Сообщений: 304
16.01.2019, 18:41 9
Горбаг, Вашим способом получилось. А updateGL определен.
0
16.01.2019, 18:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2019, 18:41
Помогаю со студенческими работами здесь

Как вызвать в Main метод из другого класса?
Задачка на среднее арифметическое. Создал класс "Array", в котором происходит заполнение массива...

Как вызвать значение переменной из другого класса?
у меня есть следующий код: class London { public void Start(){ int k; k =...

Как вызвать обработчик события из другого класса?
Допустим есть проект, состоящий из: Window1.xaml Window1.xaml.cs App.xaml App.xaml.cs В...

Как верно вызвать метод другого класса?
Есть код на Java, не понимаю как верно его реализовать на Python, интересует только реализация...


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

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