snifer

【技术分享】【原创】Qtopia绘图初接触

0
阅读(2414)

最近天天在实验室做小车啊,同学们热情似火,我们亚历山大啊!

今天又编了一下Qtopia,这个工具以后会越来越重要,今天,我写出来,与大家分享一下。

要用Qtopia,先保证安装软件: 

        RedHat Linux 9.0操作系统

        嵌入式Linux开发环境

  嵌入式Linux开发环境(含Qt/e和Qtopia)

我演示一下利用Qtopia创建一个窗口,在窗口进行画图,如直线、矩形和椭圆等。


       在图形界面编程中,用户可能需要绘制一些有特殊意义的图形。Qt中提供了QPainter、QPen和QBrush等机制用于绘图,有非常灵活的API函数用于画图,如画点、画线、画矩形、椭圆和扇形等,使用这些API函数需要包含头文件qpainter.h和qbrush.h等。 


(1)进入/sbc2410/x86-qtopia目录,运行set-env脚本,设置环境变量,然后创建文件夹draw。

$ cd /sbc2410/x86-qtopia

$ . set-env

$ mkdir draw

 

(2)进入draw目录,建立文件draw.cpp,并编写程序,然后使用progen工具生成工程文件draw.pro。

$ cd draw

$ vi draw.cpp

$ progen –t app.t –o draw.pro


(3)使用tmake工具,生成draw工程的Makefile文件,并进行修改,编译,得到可执行文件draw。

$ tmake –o Makefile draw.pro

$ make

 

(4)启动虚拟控制台,运行draw程序。

$ ./draw -qws

代码:



#include <qapplication.h>
#include <qwidget.h>
#include <qpainter.h>
#include <qbrush.h>

class DrawDemo:public QWidget
{
public:
	DrawDemo( QWidget *parent=0, const char *name=0 );
	void paintEvent( QPaintEvent *);
private:
	void drawPrimitives( QPainter *p);
};

DrawDemo::DrawDemo( QWidget *parent, const char *name):QWidget(parent, name)
{
	setBackgroundColor(white);
}

void DrawDemo::drawPrimitives(QPainter *p)
{
	QBrush b1( Qt::blue );
	QBrush b2( Qt::green, Qt::Dense6Pattern );
	QBrush b3( Qt::NoBrush );
	QBrush b4( Qt::CrossPattern );

	p->setPen( Qt::red );
	p->setBrush( b1 );
	p->drawRect( 20, 20, 120, 90 );

	p->setBrush( b2 );
	p->drawRoundRect( 180, 20, 120, 90, 20, 20 );

	p->setBrush( b3 );
	p->drawEllipse( 20, 140, 120, 60 );

	p->setBrush( b4 );
	p->drawPie( 180, 140, 120, 120, 45*16, 90*16 );

	p->setBrush( b1 );
	p->drawLine( 20, 220, 300, 220 );
}

void DrawDemo::paintEvent( QPaintEvent *)
{
	QPainter paint(this);
	drawPrimitives(&paint);
}

int main(int argc, char **argv)
{
	QApplication app(argc, argv);
	
	DrawDemo drawdemo;
	drawdemo.resize( 320, 240 );
	drawdemo.setCaption( "QT DRAW DEMO");

	app.setMainWidget(&drawdemo);
	drawdemo.show();

	return app.exec(); }
结果: