【技术分享】【原创】Qtopia绘图初接触
0赞最近天天在实验室做小车啊,同学们热情似火,我们亚历山大啊!
今天又编了一下Qtopia,这个工具以后会越来越重要,今天,我写出来,与大家分享一下。
要用Qtopia,先保证安装软件:
嵌入式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(); }
结果:
