crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Рисование в Qt
greh
  опции профиля:
сообщение 23.11.2009, 16:42
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 23.11.2009
Пользователь №: 1252

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток. Помогите разобраться с рисованием в Qt.

Вот класс отвечающий за виджет на котором рисуются фигуры:

paintarea.h:

CODE
#ifndef PAINTAREA_H
#define PAINTAREA_H

#include <QWidget>
#include <QBrush>
#include <QPen>

class PaintArea: public QWidget
{
Q_OBJECT

public:
PaintArea(/*QWidget *parent = 0*/); //for what?
void paintEvent(/*QPaintEvent *event*/); //for what?

public slots:
void Paint();
};


#endif // PAINTAREA_H


paintarea.cpp:

CODE
#include "paintarea.h"

PaintArea::PaintArea()
{
setFixedSize(500,500);
}

void PaintArea::Paint()
{
update();
}

void PaintArea::paintEvent(/*QPaintEvent **/) //for what?
{
QRect rect(10,20,30,40);

QPainter painter(this);//paintarea.cpp:17: error: variable ‘QPainter painter’ has initializer but incomplete type

painter.setRenderHint(QPainter::Antialiasing,true);
painter.setPen(QPen(Qt::black,10));
painter.setBrush(QBrush(Qt::green));

painter.drawRect(rect);


}


Стянуто это безобразие из примеров, однако даже не компилируется. И объясните пожалуйста для чего нужны параметры которые я закоментировал? Заранее спасибо.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 23.11.2009, 18:50
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(greh @ 23.11.2009, 20:04) *
как же всётаки работает event
ОСь шлёт событие, у виджета вызывается соответсвующий данному типу события обработчик - функция содержащая в своём имени слово "event". Например, когда ОСь посылает событие "А ну перерисуйся" вызывается метод paintEvent.

Цитата(greh @ 23.11.2009, 20:04) *
Как заставить его рисовать только тогда когдя я нажимаю кнопку(слот Paint() )
не перерисовывать виджет в обработчике paintEvent, если не была нажата кнопка, например ввести флаг-член_класса
В слоте его выставлять, а в paintEvent'е проверять, после перерисовки сбрасывать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.3.2021, 20:34