Название: QWidget and QPainter Отправлено: carhun от Август 14, 2012, 10:52 Добрый день.
Подскажите как у QWidget'a получить его QPainter? пробую вот так this->painterEngine()->painter() не помогает, постоянно начинает вылетать приложение... Название: Re: QWidget and QPainter Отправлено: GreatSnake от Август 14, 2012, 11:02 Получить "правильный" QPainter от QWidget позволительно только в перегруженном QWidget::paintEvent():
Код О чём, кстати, с примерами описано в руководстве (http://www.doc.crossplatform.ru/qt/4.7.x/qpainter.html#QPainter-2). Название: Re: QWidget and QPainter Отправлено: carhun от Август 14, 2012, 11:27 Спасибо.
Т.е. если у себя заведу переменную в классе типа QPainter и при вызову QPaintEvent сохраню там себе в эту перменную QPainter, то я с этим QPainter'м вне QPaintEvent не смогу работать? Или как мне тогда делать если мне нужен этот QPainter? заводить переменную флажок, по к-ой будет определяться нужна ли отрисовака там мне нужной фигурки, и проверять эту переменную в paintEvent'e? Название: Re: QWidget and QPainter Отправлено: GreatSnake от Август 14, 2012, 11:35 Т.е. если у себя заведу переменную в классе типа QPainter и при вызову QPaintEvent сохраню там себе в эту перменную QPainter, то я с этим QPainter'м вне QPaintEvent не смогу работать? По умолчанию нет, не сможешь.Цитировать Или как мне тогда делать если мне нужен этот QPainter? заводить переменную флажок, по к-ой будет определяться нужна ли отрисовака там мне нужной фигурки, и проверять эту переменную в paintEvent'e? Отрисовку делай в paintEvent() с учётом QPaintEvent::rect(). Для вызова отрисовки отдельной части используйКод
Название: Re: QWidget and QPainter Отправлено: carhun от Август 14, 2012, 12:27 что-то все равно не рисует:
Код: void MyWidget::paintEvent(QPaintEvent *e) Название: Re: QWidget and QPainter Отправлено: GreatSnake от Август 14, 2012, 12:36 Код верный. Ищи причину в другом.
Название: Re: QWidget and QPainter Отправлено: carhun от Август 16, 2012, 12:11 Все равно получается, так что если есть какой-то еще виджет, то он перекрывает, то что на нем нарисовано...
Вот пример. Хочется так что бы линия рисовалась и поверх кнопки... Название: Re: QWidget and QPainter Отправлено: GreatSnake от Август 16, 2012, 12:16 А что, кнопка разве не виджет? У неё свой paintEvent() и естественно её отрисовка будет поверх родительского виджета.
Это же очевидно ??? Ты бы лучше описал, что хочешь получить на выходе, а не боролся с тем, в чём мало разбираешься. Название: Re: QWidget and QPainter Отправлено: carhun от Август 16, 2012, 12:39 Та получается мне нужен заводить еще одни виджет, к-ый будет рисовать поверх...
Я хочу получить такое: Есть у меня виджет, на к-ом нарисованы графики и когда я вожу мышкой по этому графику оно рисовало вертикальную линию, и соотв. когда я мышку вожу, то линия двигается за ней. Получается надо делать вот так или нет? Но тогда получается что сама кнопка не будет кликабельной пока я не удалю виджет, к-ый рисует линию поверх кнопки... ? Название: Re: QWidget and QPainter Отправлено: GreatSnake от Август 16, 2012, 13:02 Имхо, логичнее для этого использовать QGraphicsView/QGraphicsScene.
Для добавления кнопки на сцену используй QGraphicsWidget. Для отрисовки вертикальной линии используй QGraphicsLineItem с максимальным zValue(). |