博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

愿逝者安息 让生者前行 深切哀悼5.12遇难同胞

愿逝者安息 让生者前行 深切哀悼5.12遇难同胞
creatory.cublog.cn


个人分析
个人分析:
一.LCDRange类
1.slider信号valueChanged(int)关联到lcd槽display(int),用于这两个部件显示值的同步改变
2.slider信号valueChanged(int)关联到LCDRange类自定义信号valueChanged(int),局部部件值改变时用于全局通知,便于同类外进行通信
3.LCDRange类留有外部接口:
void setValue(int value);
void setRange(int minValue,int maxValue);
用于更新本类中的QSlider变量的值
二.CannonField类
1..对外留有setAngle(int)槽用于更新本类currentAngle变量的值
2.在setAngle(int)调用最后进行update()更新引发paintEvent()事件进行重绘,同时发射自定义信号angleChanged(int),用于类外通信
3.CannonField类从父类继承paintEvent事件进行窗体重绘
三.main主程序分析
1. 构造一个LCDRange对象和CannonField对象
2.将LCDRange/valueChanged信号关联到CannonField/setValue槽
3.将CannonField/angleChanged信号关联到 LCDRange/setValue槽
其他测试:
如果把update()注释掉,则就不会引发paintEvent事件,窗体就不会更新
但是如果将emit angleChanged(int)注释掉,则对结果不产生任何影响,因为CannonField类是不可编辑(即不像QSlider可以自由改变值,所以这步也不可以 不做)
由此看来把这句注释掉对效果也不产生任何影响:
//connect(cannonField,SIGNAL(angleChanged(int)),angle,SLOT(setValue(int)));

说明:
本人的一些之见而已,仅供参考,不负任何法律责任.

发表于: 2008-04-26 ,修改于: 2008-04-26 09:49,已浏览84次,有评论0条 推荐 投诉


网友评论

发表评论