Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: sanaforewer от Март 18, 2012, 09:24



Название: Рисование фигур по нажатию клавиши (Решено)
Отправлено: sanaforewer от Март 18, 2012, 09:24
Задача:
Нужно рисовать 4 различные геометрические фигуры по нажатию клавишь 1,2,3,4 на клавиатуре компьютера

ну я понял что надо создать свой класс
переопределить методы
virtual void paintEvent(QPaintEvent* pe)
virtual void keyPressEvent(QKeyEvent *e);
вопрос-
рисовать Qt может только из paintEvent, а как передать в этот метод информацию о нажатой клавише из keyPressEvent ?
через глобальную переменную?
но глобальные переменные не рекомендуется использовать
я только только на Qt писать начал как это по уму сделать (как обычно люди делают) подскажите плз


Название: Re: Рисование фигур по нажатию клавиши
Отправлено: LisandreL от Март 18, 2012, 11:38
Через переменную поле класса.
paintEvent провозируете через update() или repaint() (в чём разница смотрите в справке).


Название: Re: Рисование фигур по нажатию клавиши
Отправлено: sanaforewer от Март 18, 2012, 13:07
сделал, так конечно лучше смотрится,
но принципиально ничего не изменилось
можно ли это как то сделать на уровне механизма событий+наследования?
или я пытаюсь усложнить простую задачу?

интересно как бы это задачу выполнил опытный программист?


Название: Re: Рисование фигур по нажатию клавиши
Отправлено: Igors от Март 18, 2012, 13:53
Этот пример (рисование фигур) используется для введения в ООП уже десятки лет  :)
В общем случае от Вас требуется создать базовый класс (напр CShape) и породить от него различные CRectangle, CCircle и.т.п. у которых есть свои поля и перекрытые виртуальные методы (paintEvent). По нажатию Вы должны создать нужный класс который "умеет себя рисовать"

Эх, если бы все было так просто как в этом примере  :)


Название: Re: Рисование фигур по нажатию клавиши
Отправлено: sanaforewer от Март 18, 2012, 14:16
НЯЯЯЯЯ
СПС!