带外存储虚拟化系统演示.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
带外存储虚拟化系统演示

* 比较两者。 解决方案一意味着需要维护大量的额外代码。 解决方案二添加另一个类,而我们大概不能重用。 (有第三种方法,就是让接收槽察看信号的发送槽并使用一个动态属性去持有这个值,但是这实际上并不适合向非高水平学生展示) 待续 * 为解决这个问题,信号映射器类( signal mapper class)进入视野。 它允许我们用一个特定值关联每个发送者。即把一个不带参数的信号转换成带一个参数的一个信号,其中参数值取决于原始信号的发送者。 诀窍是把信号映射器防止在按钮和keyPressed槽之间。 使用setMapping,使到每一个按钮被映射成一个值(可以是int,QString,一个QWidget指针或一个QObject指针)。 每一个按钮的clicked信号被连接到信号映射器的映射槽。然后映射器的映射信号被连接到keyPressed槽。 待续 * 察看连接的一个生动方法是通过信号映射器传递信号,一个值(整数)被添加到信号中。 * 让我们看一个真实的例子,就是往情景中稍微添加更多复杂的东西。 我们会使用两个表盘 – LCD对并用我们自定义的TempConverter类互连它们以实现摄氏度与华氏度之间的转换。 这不单是转换,它会监控并在变化发生时发射信号。 待续 * 对话框包含一个TempConverter对象和用户界面。 用户界面分成两半 – 一半是摄氏度而另一半是华氏度。每个都由一个QGroupBox组成。 组框中每一个都包含一个QDial和一个QLCDNumber。 待续 * TempConverter类声明。 在可以添加信号和槽之前,我们需要QObject父对象和Q_OBJECT。 Setter是槽。 每一个温度的改变都有对应信号。 为避免无限循环我们必须有一个“当前”温度。在这个例子中我们已经决定将其控制为摄氏度。 鉴于我们由始至终使用整数值,所以从温度转换的角度看不会非常准确。 待续 * 看槽实现, setTempCelsius槽包含了循环锁,因为“当前”温度控制为摄氏度。然后它会更新内部状态并发射两个信号。 注意华氏度信号的参数由getter函数取回,实现从C到F的转换。 设定华氏度的槽转换温度(从F到C)并使用设定摄氏度函数。 待续 * 构成应用程序的窗口有四个部件组成(摄氏度和华氏度的表盘 + LCD)以及一个TempConverter对象。 表盘之间的连接是建立来通过温度器转换对象的,而LCD则直接由表盘驱动。 待续 * 下一张幻灯片将会显示一个信号怎么通过系统传播。 一切都开始于一个用户事件 – celsiusDial被移动。 这使到它发射valueChanged信号。 待续 * valueChanged信号被连接到celsiusLcd的显示以及温度转换器的setTempCelsius。 display的调用仅仅改版LCD所显示的值,而setTempCelsius的调用则改变温度转换器的值。 待续 * 改变温度转换器的温度导致两个信号被发射: tempCelsiusChanged和tempFahrenheitChanged。 待续 * tempCelsiusChanged信号被连接到celsiusDial的setValue槽。这个槽检测到表盘的值没有改变 – 于是就此终止。 tempFahrenheitChanged信号连接到fahrenheitDial的setValue,导致表盘的值改变。 待续 * 因为表盘的值发生了改变,所以它发射了携带新值的valueChanged信号 待续 * 这导致fahrenheitLcd被更新(通过display槽) setTempFahrenheit槽也被调用。这个槽检测到温度没有改变并就此停止。 待续 * 在这一点上,所有信号已经通过系统和TempConverter对象传播,而所有的部件再次同步。 注意槽是如何承担责任以停止通过系统的无限传播的。 同时注意选择用于“当前”温度的刻度的重要性。一个导致摄氏度和华氏度数值匹配不当的舍入错误就可能导致系统前后不定地摆动。 用户调节摄氏度表盘。 * 温度转换器 TempConverter setTempCelsius setTempFahrenheit tempCelsiusChanged tempFahrenheitChanged valueChanged → setTempCelsius valueChanged → setTempFahrenheit tempCelsiusChanged → setValue tempFahrenheitChanged → setValue valueChanged → display connect(ce

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档