- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
qt编程教学计划
qt编程教学计划
篇一: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
CannonField现在就有了射击能力。
void shoot();
当炮弹不在空中,调用这个槽会使加农炮射击。
private slots:
void moveShot();
当炮弹正在空中时,这个私有槽使用一个定时器来移动射击。
private:
void paintShot( QPainter * );
这个函数来画射击。
QRect shotRect() const;
当炮弹正在空中的时候,这个私有函数返回封装它所占用空间的矩形,否则它就返回一个没有定义的矩形。
int timerCount;
QTimer * autoShootTimer;
float shoot_ang;
float shoot_f;
这些私有变量包含了描述射击的信息。timerCount保留了射击进行后的时间。shoot_ang是加农炮射击时的角度,shoot_f是射击时加农炮的力量。
(2)t11/cannon.cpp
#include math.h
我们包含了数学库,因为我们需要使用sin()和cos()函数。
CannonField::CannonField( QWidget *parent, const char *name ) : QWidget( parent, name )
{
ang = 45;
f = 0;
timerCount = 0;
autoShootTimer = new QTimer( this, movement handler );
connect( autoShootTimer, SIGNAL(timeout()), this, SLOT(moveShot()) );
shoot_ang = 0;
shoot_f = 0;
setPalette( QPalette( QColor( 250, 250, 200) ) );
}
我们初始化我们新的私有变量并且把QTimer::timeout()信号和我们的moveShot()槽相连。我们会在定时器超时的时候移动射击。
void CannonField::shoot()
{
if ( autoShootTimer-isActive() )
return;
timerCount = 0;
shoot_ang = ang;
shoot_f = f;
autoShootTimer-start( 50 );
}
只要炮弹不在空中,这个函数就会进行一次射击。timerCount被重新设置为零。
shoot_ang和shoot_f设置为当前加农炮的角度和力量。最后,我们开始这个定时器。void CannonField::moveShot()
{
QRegion r( shotRect() );
timerCount++;
QRect shotR = 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。这将会发送一个单一的绘画事件,但仅仅有一个到两个举行需要刷新。
void CannonField::paintEvent( QPaintE
您可能关注的文档
- 2016年中心学校工作计划.doc
- 2016年会计工作总结及年工作计划.doc
- 2016年六安金安区特岗教师计划招聘岗位.doc
- 2016年农村幼儿园工作计划.doc
- 2016年公共卫生考核计划.doc
- 2016年办公室计划.doc
- 2016年化工企业安全生产工作计划.doc
- 2016年医院行风建设工作计划.doc
- 2016年医院工作总结及年工作计划.doc
- 2016年卫生信息化工作计划.doc
- 《GB/Z 44363-2024致热性 医疗器械热原试验的原理和方法》.pdf
- GB/T 16716.6-2024包装与环境 第6部分:有机循环.pdf
- 中国国家标准 GB/T 44376.1-2024微细气泡技术 水处理应用 第1 部分:亚甲基蓝脱色法评价臭氧微细气泡水发生系统.pdf
- 《GB/T 44376.1-2024微细气泡技术 水处理应用 第1 部分:亚甲基蓝脱色法评价臭氧微细气泡水发生系统》.pdf
- GB/T 44376.1-2024微细气泡技术 水处理应用 第1 部分:亚甲基蓝脱色法评价臭氧微细气泡水发生系统.pdf
- 中国国家标准 GB/T 44315-2024科技馆展品设计通用要求.pdf
- GB/T 44305.2-2024塑料 增塑聚氯乙烯(PVC-P)模塑和挤塑材料 第2部分:试样制备和性能测定.pdf
- 《GB/T 44315-2024科技馆展品设计通用要求》.pdf
- GB/T 44315-2024科技馆展品设计通用要求.pdf
- GB/T 39560.9-2024电子电气产品中某些物质的测定 第9 部分:气相色谱-质谱法(GC-MS)测定聚合物中的六溴环十二烷.pdf
文档评论(0)