![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Дмитрий_* |
![]()
Сообщение
#1
|
Гости ![]() |
Хочу нарисовать башенку из прямоугольников определённой высоты в зависимости от положения ползунка (при каждом изменении его положения башенка перерисовывается). Подскажите, пожалуйста, как это реализовать?
|
|
|
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Накидал элементарный примерчик.
Рисуется квадрат в центре окна. Колесиком мыши изменяются его размеры. Примерно то что просили. Что непонятно, спрашиваете ![]() mypaint.h
|
|
|
child_of_bodom |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 30.4.2009 Пользователь №: 716 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо большое за пример!
А можно ли как-то связать объект QDial или QLCDNumber с событием прорисовки окна, чтобы в зависимости от их параметра N рисовалось N квадратиков? |
|
|
igor_bogomolov |
![]()
Сообщение
#4
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
А можно ли как-то связать объект QDial или QLCDNumber с событием прорисовки окна, чтобы в зависимости от их параметра N рисовалось N квадратиков? Да без проблем.Только для начала рекомендую почитать вот это. Для демонстрации переделал свой предыдущий пример. Код компилируемый. paint.h
main.cpp
![]() Сообщение отредактировал igor_bogomolov - 30.4.2009, 2:27 |
|
|
child_of_bodom |
![]()
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 30.4.2009 Пользователь №: 716 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо большое! Праздники тут подвернулись, как-то руки не дошли всё испробовать. Всё работает просто супер. Вот только вопросы всё накапливаются и накапливаются... Если я снова хочу прорисовать новую фигуру, а старую удалить, то как это делать? Есть ли такая функция, которая удаляет с окна всё ранее нарисованное?
И как делать анимацию как в последнем сообщении?
Эскизы прикрепленных изображений
|
|
|
kwisp |
![]()
Сообщение
#6
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо большое! Праздники тут подвернулись, как-то руки не дошли всё испробовать. Всё работает просто супер. Вот только вопросы всё накапливаются и накапливаются... Если я снова хочу прорисовать новую фигуру, а старую удалить, то как это делать? Есть ли такая функция, которая удаляет с окна всё ранее нарисованное? рисуйте поверх ничего не удаляя и всё естественно с самостоятельной отрисовкой фона. этож гиф! Сообщение отредактировал kwisp - 3.5.2009, 22:39 |
|
|
child_of_bodom |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 30.4.2009 Пользователь №: 716 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
igor_bogomolov |
![]()
Сообщение
#8
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
child_of_bodom, давай по порядку. Тот рисунок который ты выше привел, от куда он? Сам рисовал пирамидку?
Если сам, то по идее, вопросов о том, как происходит перерисовка виджета у тебя быть не должно. ![]() а как тогда сделать отрисовку фона? Либо через drawRect, либо через QPalette
Сообщение отредактировал igor_bogomolov - 4.5.2009, 0:19 |
|
|
child_of_bodom |
![]()
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 30.4.2009 Пользователь №: 716 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Раскрывающийся текст
вот так нарисовал пирамиду, потом хочу нажать кнопку "Start Game!", при этом все элементы с этого окна должны исчезнуть. Раскрывающийся текст
окончательно всё прорисовывается после любого действия: нажать крестик закрытия программы или меню "пуск". хотелось бы рисовалось всё сразу. Раскрывающийся текст
вот так нарисовал пирамиду, потом хочу нажать кнопку "Start Game!", при этом все элементы с этого окна должны исчезнуть. Раскрывающийся текст
окончательно всё прорисовывается после любого действия: нажать крестик закрытия программы или меню "пуск". хотелось бы рисовалось всё сразу.
Причина редактирования: см. справку, указанную в следующем сообщении
Эскизы прикрепленных изображений
|
|
|
igor_bogomolov |
![]()
Сообщение
#10
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Справка по кнопкам и тэгам форума
Со switсh ты конечно жестко замутил. Уж больно огромный код получается. Использую хотябы QMap<int, QColor> Сообщение отредактировал igor_bogomolov - 4.5.2009, 1:17 |
|
|
kwisp |
![]()
Сообщение
#11
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
child_of_bodom,
вопрос как ты "рисуешь" на виджете? на картинке а потом её вставляешь когда тебе угодно?(извини весь код в теме не смотрел времени мало). после любого вызова update() repaint() вызовется paintEvent() в котором непосредственно рисуется виджет т.е. один из вариантов последовательности действий чтоб все перерисовалось. это 1. дождаться действия(нажатие на старт игры) 2. произвести необходимые изменения отрисовки. 3. вызвать update() Или repaint() посмотрите как это делается в ${QTDIR}/examples/* посмотрите Paint System |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 24.6.2025, 22:21 |