LINUX.ORG.RU

Рисование в Qt 4


0

0

Ничего не рисуется. Что я не так делаю?
#include <QApplication>
#include <QWidget>
#include <QPainter>

class PaintWidget : public QWidget{
public:
	PaintWidget(QWidget* parent);
	void PaintEvent(QPaintEvent *event);
};

PaintWidget::PaintWidget(QWidget* parent)
	: QWidget(parent)
{
}

void PaintWidget::PaintEvent(QPaintEvent *event)
{
	QRect rect(0,0,100,100);
	QPainter* paint = new QPainter(this);
	paint->setWindow(-50,-50,100,100);
	paint->drawLine(10,10,20,20);
}

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	PaintWidget parent(0);
	parent.show();
	parent.update();
	return app.exec();
} 

Может так надо ? :)

class PaintWidget : public QWidget{ Q_OBJECT public: PaintWidget(QWidget* parent); void PaintEvent(QPaintEvent *event); };

Q_OBJECT - забыл или как ? :)

htower_ ★★
()
Ответ на: комментарий от Deleted

>а во-вторых, нужно поместить декларацию в раздел "protected".

а если оставить открытым методом , работать перестанет ? :_)

kitov ★★★
()
Ответ на: комментарий от htower_

Я здесь не использую ни сигналов, ни слотов - Q_OBJECT НЕ нужен

Brodobrey
() автор топика
Ответ на: комментарий от Deleted

Все равно ничего не рисует
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPaintEvent>

class PaintWidget : public QWidget{
public:
	PaintWidget(QWidget* parent);
protected:
	void paintEvent(QPaintEvent *event);
};

PaintWidget::PaintWidget(QWidget* parent)
	: QWidget(parent)
{
}

void PaintWidget::paintEvent(QPaintEvent *event)
{
	QRect rect(100,200,11,16);
	QPainter* paint = new QPainter(this);
	paint->setWindow(rect);
	paint->drawLine(10,10,20,20);
}

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	PaintWidget parent(0);
	parent.show();
	parent.update();
	return app.exec();
} 

anonymous
()
Ответ на: комментарий от anonymous

Всем спасибо за ответы
void PaintWidget::paintEvent(QPaintEvent *event)
{
	//QRect rect(100,200,1,1);
	QPainter* paint = new QPainter(this);
	paint->setWindow(-50,-50,100,100);
	paint->drawLine(10,10,20,20);
}

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.