QT编程教学计划.docx

上传人:b****1 文档编号:10998997 上传时间:2023-05-28 格式:DOCX 页数:19 大小:27.24KB
下载 相关 举报
QT编程教学计划.docx_第1页
第1页 / 共19页
QT编程教学计划.docx_第2页
第2页 / 共19页
QT编程教学计划.docx_第3页
第3页 / 共19页
QT编程教学计划.docx_第4页
第4页 / 共19页
QT编程教学计划.docx_第5页
第5页 / 共19页
QT编程教学计划.docx_第6页
第6页 / 共19页
QT编程教学计划.docx_第7页
第7页 / 共19页
QT编程教学计划.docx_第8页
第8页 / 共19页
QT编程教学计划.docx_第9页
第9页 / 共19页
QT编程教学计划.docx_第10页
第10页 / 共19页
QT编程教学计划.docx_第11页
第11页 / 共19页
QT编程教学计划.docx_第12页
第12页 / 共19页
QT编程教学计划.docx_第13页
第13页 / 共19页
QT编程教学计划.docx_第14页
第14页 / 共19页
QT编程教学计划.docx_第15页
第15页 / 共19页
QT编程教学计划.docx_第16页
第16页 / 共19页
QT编程教学计划.docx_第17页
第17页 / 共19页
QT编程教学计划.docx_第18页
第18页 / 共19页
QT编程教学计划.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

QT编程教学计划.docx

《QT编程教学计划.docx》由会员分享,可在线阅读,更多相关《QT编程教学计划.docx(19页珍藏版)》请在冰点文库上搜索。

QT编程教学计划.docx

QT编程教学计划

第一个例子

在这个例子里我们介绍了一个定时器来实现动画的射击。

?

?

?

?

?

t11/lcdrange.h包含lcdrange类定义。

t11/lcdrange.cpp包含lcdrange类实现。

t11/cannon.h包含cannonfield类定义。

t11/cannon.cpp包含cannonfield类实现。

t11/main.cpp包含mywidget和main。

(1)t11/cannon.h

voidshoot();

当炮弹不在空中,调用这个槽会使加农炮射击。

privateslots:

voidmoveshot();

当炮弹正在空中时,这个私有槽使用一个定时器来移动射击。

private:

voidpaintshot(qpainter*);

这个函数来画射击。

qrectshotrect()const;

当炮弹正在空中的时候,这个私有函数返回封装它所占用空间的矩形,否则它就返回一个没有定义的矩形。

inttimercount;

qtimer*autoshoottimer;

floatshoot_ang;

floatshoot_f;

这些私有变量包含了描述射击的信息。

timercount保留了射击进行后的时间。

shoot_ang是加农炮射击时的角度,shoot_f是射击时加农炮的力量。

(2)t11/cannon.cpp

#include<math.h>

我们包含了数学库,因为我们需要使用sin()和cos()函数。

cannonfield:

:

cannonfield(qwidget*parent,constchar*name):

qwidget(parent,name)

{

ang=45;

f=0;

timercount=0;

autoshoottimer=newqtimer(this,movementhandler);

connect(autoshoottimer,signal(timeout()),this,slot(moveshot()));

shoot_ang=0;

shoot_f=0;

setpalette(qpalette(qcolor(250,250,200)));

}

我们初始化我们新的私有变量并且把qtimer:

:

timeout()信号和我们的moveshot()槽相连。

我们会在定时器超时的时候移动射击。

voidcannonfield:

:

shoot()

{

if(autoshoottimer->isactive())

return;

timercount=0;

shoot_ang=ang;

shoot_f=f;

autoshoottimer->start(50);

}

只要炮弹不在空中,这个函数就会进行一次射击。

timercount被重新设置为零。

shoot_ang和shoot_f设置为当前加农炮的角度和力量。

最后,我们开始这个定时器。

voidcannonfield:

:

moveshot()

{

qregionr(shotrect());

timercount++;

qrectshotr=shotrect();

if(shotr.x()>width()||shotr.y()>height())

autoshoottimer->stop();

else

r=r.unite(qregion(shotr));

repaint(r);

}

moveshot()是一个移动射击的槽,当qtimer开始的时候,每50毫秒被调用一次。

它的任务就是计算新的位置,重新画屏幕并把炮弹放到新的位置,并且如果需要的话,停止定时器。

首先我们使用qregion来保留旧的shotrect()。

qregion可以保留任何种类的区域,并且我们可以用它来简化绘画过程。

shotrect()返回现在炮弹所在的矩形——稍后我们会详细介绍。

然后我们增加timercount,用它来实现炮弹在它的轨迹中移动的每一步。

下一步我们算出新的炮弹的矩形。

如果炮弹已经移动到窗口部件的右面或者下面的边界,我们停止定时器或者添加新的shotrect()到qregion。

最后,我们重新绘制qregion。

这将会发送一个单一的绘画事件,但仅仅有一个到两个举行需要刷新。

voidcannonfield:

:

paintevent(qpaintevent*e)

{

qrectupdater=e->rect();

qpainterp(this);

if(updater.intersects(cannonrect()))

paintcannon(&p);

if(autoshoottimer->isactive()&&updater.intersects(shotrect()))

paintshot(&p);

}

绘画事件函数在前一章中已经被分成两部分了。

现在我们得到的新的矩形区域需要绘画,检查加农炮和/或炮弹是否相交,并且如果需要的话,调用paintcannon()和/或paintshot()。

voidcannonfield:

:

paintshot(qpainter*p)

{

p->setbrush(black);

p->setpen(nopen);

p->drawrect(shotrect());

}

这个私有函数画一个黑色填充的矩形作为炮弹。

我们把paintcannon()的实现放到一边,它和前一章中的paintevent()一样。

qrectcannonfield:

:

shotrect()const

{

constdoublegravity=4;

doubletime=timercount/4.0;

doublevelocity=shoot_f;

doubleradians=shoot_ang*3.14159265/180;

doublevelx=velocity*cos(radians);

doublevely=velocity*sin(radians);

doublex0=(barrelrect.right()+5)*cos(radians);

doubley0=(barrelrect.right()+5)*sin(radians);

doublex=x0+velx*time;

doubley=y0+vely*time-0.5*gravity*time*time;

qrectr=qrect(0,0,6,6);

r.movecenter(qpoint(qround(x),height()-1-qround(y)));

returnr;

}

这个私有函数计算炮弹的中心点并且返回封装炮弹的矩形。

它除了使用自动增加所过去的时间的timercount之外,还使用初始时的加农炮的力量和角度。

运算公式使用的是有重力的环境下光滑运动的经典牛顿公式。

简单地说,我们已经选择忽略爱因斯坦理论的结果。

我们在一个y坐标向上增加的坐标系统中计算中心点。

在我们计算出中心点之后,我们构造一个6*6大小的qrect,并把它的中心移动到我们上面所计算出的中心点。

同样的操作我们把这个点移动到窗口部件的坐标系统(请看坐标系统)。

qround()函数是一个在qglobal.h中定义的内嵌函数(被其它所有qt头文件包含)。

qround()把一个双精度实数变为最接近的整数。

(3)t11/main.cpp

classmywidget:

publicqwidget

{

public:

mywidget(qwidget*parent=0,constchar*name=0);

};

唯一的增加是shoot按钮。

qpushbutton*shoot=newqpushbutton(&shoot,this,shoot);

shoot->setfont(qfont(times,18,qfont:

:

bold));

在构造函数中我们创建和设置shoot按钮就像我们对quit按钮所做的那样。

注意构造函数的第一个参数是按钮的文本,并且第三个是窗口部件的名称。

connect(shoot,signal(clicked()),cannonfield,slot(shoot()));

把shoot按钮的clicked()信号和cannonfield的shoot()槽连接起来。

行为

thecannoncanshoot,buttheresnothingtoshootat.

第二个例子

intqtimer:

:

start(intmsec,boolsshot=false)

analogclock

thisexampledisplaysananalogclockwidget.

#ifndefaclock_h

#defineaclock_h

#include<qwidget.h>

#include<qdatetime.h>

classanalogclock:

publicqwidget//analogclockwidget

{

q_object

public:

analogclock(qwidget*parent=0,constchar*name=0);

voidsetautomask(boolb);

publicslots:

voidsettime(constqtime&t);

protected:

voidupdatemask();

voidpaintevent(qpaintevent*);

voidmousepressevent(qmouseevent*);

voidmousemoveevent(qmouseevent*);

privateslots:

voiddrawclock(qpainter*);

voidtimeout();

private:

qpointclickpos;

qtimetime;

};

#endif//aclock_h

#includeaclock.h

#include<qtimer.h>

#include<qpainter.h>

#include<qbitmap.h>

//constructsananalogclockwidgetthatusesaninternalqtimer.

analogclock:

:

analogclock(qwidget*parent,constchar*name)

:

qwidget(parent,name)

{

time=qtime:

:

currenttime();//getcurrenttime

qtimer*internaltimer=newqtimer(this);//createinternaltimer

connect(internaltimer,signal(timeout()),slot(timeout()));

internaltimer->start(5000);//emitsignalevery5seconds}

voidanalogclock:

:

mousepressevent(qmouseevent*e)

{

if(istoplevel())

clickpos=e->pos()+qpoint(geometry().topleft()-framegeometry().topleft());}

voidanalogclock:

:

mousemoveevent(qmouseevent*e)篇二:

在vs2010中使用qt编程

在vs2010中使用qt编程

一、安装所需软件

1.下载安装vs2010,以及sp1补丁包;

2.下载qt-win-opensource-4.8.2-vs2010.exe,并安装。

这里我们假设安装在c:

\qt\4.8.2下;

3.下载qt-vs-addin-1.1.11-opensource.exe,并安装。

这三个软件安装好后,在vs的菜单界面上就会出现qt选项了。

二、环境配置

1.用vs新建一个win32控制台应用程序,我们假设工程名为:

hello。

2.选择工具->选项->项目和解决方案->vc++目录。

(1)选择“可执行文件”,在里面添加:

c:

\qt\4.8.2\bin;

(2)选择“包含文件”,在里面添加:

c:

\qt\4.8.2\include;c:

\qt\4.8.2\include\qt;c:

\qt\4.8.2\include\qtcore;c:

\qt\

4.8.2\include\qtgui

(3)选择“库文件”,在里面添加:

c:

\qt\4.8.2\lib;

三、开始编程(这里举一个简单的例子)

1.选择菜单上的“qt”选项->“launchdesigner”,启动designer:

放入一个“label”,内容写为:

helloqt。

然后保存为hello.ui,再将它添加到源文件中。

右击“hello.ui”->“属性”->“项类型”->“自定义生成工具”:

命令行:

uic.exehello.ui-ohelloui.h

输出:

helloui.h

附加依赖项:

uic.exe;hello.ui

然后,点击“确定”。

这时再右击“hello.ui”,选择“编译”,则会生成helloui.h。

将它添加到工程中。

(1)“常规”:

选择“字符集”为“使用多字节字符集”;

(2)“调试”:

填写“环境”值为:

path=c:

\qt\4.8.2\bin;

填写“合并环境”值为:

是;

(3)“链接器”:

进入“常规”选项,填写“附加库目录”为:

c:

\qt\4.8.2\lib;进入“输入”选项,填写“附加依赖项”为:

qtcore4.lib;qtgui4.lib;

四、调试运行

到了这里,运行程序,则可正常编译,成功运行。

篇三:

《嵌入式系统原理及应用》授课计划-执行

福建工程学院

学期授课计划

2011–2012学年第2学期

教师姓名汤龙梅课程名称嵌入式系统原理及应用教材《arm&linux嵌入式系统教程》

马忠梅等北京航空航天大学出版社专业、班级计算机0901-0904、软件工程0901-0902编写教师(签名)编写日期2012年2月教研室主任(签名)系、部负责人审核(签名)篇四:

qt开发手册

目录第一章linux图形用户界面gui介绍.....................................................................................1

1.1常用gui介绍...................................................................................................................1

1.2关于qt...............................................................................................................................2

1.3qt/embedded简介.............................................................................................................4

1.4qtopia介绍.........................................................................................................................4

第二章qt的安装..........................................................................................................................6

2.1qtx11的安装....................................................................................................................6

2.2qt/embedded安装..............................................................................................................9

2.3qtopia编译.......................................................................................................................11第三章qt的编程........................................................................................................................12

实验一―helloword!

‖qt初探............................................................................................12

实验二创建一个窗口并添加按钮.......................................................................................17

实验三对象间通信:

signal和slot机制........................................................................20

实验四菜单和快捷键...........................................................................................................29

实验五工具条和状态栏.......................................................................................................38

实验六鼠标和键盘事件.......................................................................................................48

实验七对话框.......................................................................................................................63

实验八qt中的绘图..............................................................................................................75

实验九qt中的多线程编程..................................................................................................85

实验十qt中的网络编程......................................................................................................97第四章qt常用工具的介绍......................................................................................................111

4.1qt设计器(qtdesigner)............................................................................................111

4.2tmake..............................................................................................................................113

4.3qvfb.......................................................................

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2