Рисование на динамической форме |
Здравствуйте, гость ( Вход | Регистрация )
Рисование на динамической форме |
tumanovalex |
4.4.2011, 18:42
Сообщение
#1
|
Студент Группа: Участник Сообщений: 24 Регистрация: 6.8.2008 Пользователь №: 253 Спасибо сказали: 0 раз(а) Репутация: 0 |
При нажатии на кнопке основной формы создаю окно и хочу нарисовать на нем линию по диагонали на весь экран:
Окно создается, но вот линии на нем нет. Если заранее создать класс для widget и в нем определить paintEvent с рисованием линий, то, как я понимаю, все будет нормально перерисовываться. А без создания класса для виджета нельзя обойтись? Как-нибудь определить в моем коде widget->paintEvent и указать функцию, которая будет обрабатывать перерисовку? |
|
|
Litkevich Yuriy |
5.4.2011, 14:12
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
на весь экран: или на всё окно?tumanovalex, рисование в Qt осуществляется только в обработчике события paintEvent() некого виджета. Т.е. тебе нужно создать наследника от QWidget, объявить в нём метод paintEvent() и в нём рисовать. А без создания класса для виджета нельзя обойтись? можно, но это будет посложнее.Как-нибудь определить в моем коде widget->paintEvent и указать функцию, которая будет обрабатывать перерисовку? нет, так в Си++ не получится.
|
|
|
tumanovalex |
6.4.2011, 8:27
Сообщение
#3
|
Студент Группа: Участник Сообщений: 24 Регистрация: 6.8.2008 Пользователь №: 253 Спасибо сказали: 0 раз(а) Репутация: 0 |
Попробовал реализовать рисование через класс, в QTCreator получаю невнятную ошибку:
в Visual Studio более подробную ошибку: Подскажите, пожалуйста, в чем моя ошибка? Прикрепляю проект.
Прикрепленные файлы
|
|
|
wiz29 |
6.4.2011, 8:45
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
у тебя нет реализации конструктора и деструктора для класса MyWindow, хотя есть объявление (в этом случае код автоматически не генерится компилером). Поэтому и ругается.
можно сделать так , тогда все заработает. |
|
|
PAFOS |
6.4.2011, 9:10
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Все относительно просто.
Есть такой класс QPainterPath. Он определяет набор фигур, которые потом может рисовать QPainter (см. в документации) Ты делаешь виджет, который имеет в паблике экземпляр класса QPainterPath и в методе paintEvent, просто рисуешь этy path) Т.к. экземпляр класса QPainterPath у тебя в паблике - ты можешь когда угодно его поменять и соответственно поменяется рисунок на твоем виджете |
|
|
Текстовая версия | Сейчас: 26.4.2024, 6:19 |