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