Передача значений из метода paintEvent в другой класс в тот же самый метод |
Здравствуйте, гость ( Вход | Регистрация )
Передача значений из метода paintEvent в другой класс в тот же самый метод |
zuze |
16.11.2012, 11:22
Сообщение
#1
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
1. Есть класс
2. Как alpha передать в другой класс и в такой же метод? например в такой
В классе 'p' не видна же alpha. Как же правильно передать alpha? Через Сигналы и Слоты вроде надо, но я не пойму как это сделать. Помогите пожалуйста разобраться. |
|
|
RazrFalcon |
16.11.2012, 13:23
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Через сигналы:
В class l в signals добавляем Затем:
В MainWindow, где вы имеете доступ к обоим классам:
|
|
|
zuze |
21.11.2012, 22:28
Сообщение
#3
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
RazrFalcon, я сделал, как Вы написали и объявил ещё lbl1, lbl2.
В MainWindow.h
В MainWindow.cpp (в конструкторе)
А в результате компилятор всё равно выдаёт ошибку: In mamber function 'virtual void p::paintEvent(QPaintEvent *)': 'alpha' was not declared in this scope. То есть всё равно переменная alpha не видна. Что же не так? |
|
|
RazrFalcon |
21.11.2012, 22:35
Сообщение
#4
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Конечно не видет.
Вы должны в QLabel создать переменную alpha и задает ее значение через слот setAlpha(int) |
|
|
zuze |
21.11.2012, 23:08
Сообщение
#5
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
RazrFalcon, то есть мне надо в класс p.h добавить
А как вот значение переменной alpha задать через слот setAlpha(int)? Прошу прощения, что я такие "тупые" вопросы спрашиваю, по мере понимания всех процессов в Qt их будет всё меньше. Сообщение отредактировал zuze - 21.11.2012, 23:10 |
|
|
RazrFalcon |
22.11.2012, 3:15
Сообщение
#6
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Пример во вложении.
Сообщение отредактировал RazrFalcon - 22.11.2012, 3:17
Прикрепленные файлы
|
|
|
zuze |
22.11.2012, 20:23
Сообщение
#7
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
RazrFalcon, а вот так правильно, я это использую в коде побольше и у меня линия не двигается как будто в переменную ничего не передаётся.
Файлы h
Файлы cpp
|
|
|
RazrFalcon |
22.11.2012, 21:55
Сообщение
#8
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Цитата void p::setAlpha(float value)
{ alpha = value; update(); } |
|
|
zuze |
22.11.2012, 22:19
Сообщение
#9
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
RazrFalcon, я не могу поставить в эту процедуру update(); , так как у меня линии вращаются по таймеру. И update(); я вызываю там, где запускаю таймер. Может как-то иначе можно? Запуск таймеров у меня производится в файле mainwindow.cpp.
Моя задача состоит в том что я нажимаю на кнопочку, вертится одна линия (в полярных координатах), как нажимаю другую кнопку то рисуется другая линия, которая передвигается (по прямоугольным координатам). И что бы при переключении линия вертелась с последнего момента перед переключением, а не с нуля. Вот для этих целей я хочу что бы переменная из одного класса была видна в другом классе. |
|
|
RazrFalcon |
23.11.2012, 0:46
Сообщение
#10
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Так если нужно просто сохранить последние значение - зачем его вообще выносить из класса?
Не проще ли сделать что бы при первом старте alpha=-1, а при последующих alpha проверялась на равенство -1, и если не -1 - то рисуем с текущей alpha. Какие проблемы. |
|
|
Текстовая версия | Сейчас: 28.4.2024, 5:43 |