信号与槽---Designer例程
时间:2010-11-23 来源:osullishuai80
/*==================================================
试验目的: 实现信号与槽的连接
试验方式: 使用Qt Creator Designer来实现连接
试 验 人: add by 李帅 2010-11-23
==================================================*/
步骤1:新建带ui界面的Qt工程,并创建类test.若编译通过,表明新建过程无误.
步骤2:将对象verticalSlider、dial、lcdNumber拖入ui图形编辑区,并修改其属性.
<1>修改dial属性:单击dial图标,选中notchesVisible,此时图标周围会产生一些毛刺.
<2>修改lcdNumber属性:
1.单击lcdNumber图标.
2.从lcdNumber属性列表中可以看出,当前该图标的高度默认为23,为了增大lcdNumber,因此可以将属性minimumSize中的高度Height修改为100.
3.从lcdNumber属性列表中可以看出,当前该图标有5感和数码管,为了增大lcdNumber,因此可以将属性QLCDNumber中的digitCount修改为2.
步骤3:对这三个对象进行布局.布局后的效果如下图所示.在图可以看出,该窗口内总共有三个部件,分别是verticalSlider(左)、dial(下)、lcdNumber(上).
步骤4:切换到"信号和槽编辑模式".为了实现拨动dial时,verticalSlider和lcdNumber均有相应变化,或者拨动verticalSlider时,dial和lcdNumber均有相应变化,必须在三者之间建立某种关联关系.在Qt中,这种关联关系就是通过信号-槽而实现的.
(1)建立dial与verticalSlider之间的关联
<1>左键单击dial(不松手),向verticalSlider拖动鼠标,当verticalSlider被红色方框圈住时,松开左键.效果如下图所示.
<2>松开左键后,系统自动弹出如下图所示的对话框.该对话框用于连接哪个信号与哪个槽.由于现在是通过dial来控制verticalSlider,表示是由dial发送信号,由verticalSlider来执行槽(函数).所以,在图中左侧(dial)选中valueChanged(int),在右侧(verticalSlider)选中setValue(int),表示由dial设置变量value,并将该值"传递"给verticalSlider的槽函数setValue.于是,在转动dial过程中,变量value的值在不停的发生变化,此时Qt会将变化中的value传递给verticalSlider,这样对象verticalSlider也会根据dial的转动而作出相应的变化.
<3>单击OK时,Qt就建立了dial与verticalSlider的关联关系,如下图所示.
(2)按照类似的方法建立dial与lcdNumber之间的关联、verticalSlider与lcdNumber之间的关联、verticalSlider与dial之间的关联.最终关联效果如下图所示.
(3)单击空白区域,对整体进行布局,编译后生成如下图所示.在图中,拖动dial时,部件verticalSlider和lcdNumber会发生变化;拖动verticalSlider时,部件dial和lcdNumber会发生变化.这就是三者之间的关联关系.
【attention】部件与窗口的关联
在实际应用中,常常使某个部件与整个窗口的状态发生关联.比如,当用户单击"quit"键时,会关闭主窗口.当用户单击"隐藏"键时,会隐藏主窗口.这就是部件与窗口的关联.
(1)切换到"信号和槽编辑模式".
(2)按住鼠标左键不松手,将其向窗口边界处拖动,直到图中出现数字电路中的GND图标为止.
(3)松开左键后,系统自动弹出对话框.该对话框用于设置该键发出的信号与槽之间的关联.由于该键发出信号的动作是单击,因此在左侧(pushButton)内选择clicked().由于窗口的动作是关闭,因此在右侧(test)内选择close().注意,若找不到合适的选择,可选中"show signals and slots from QWidget",这会增加一些选择.
(4)按照步骤(3)来设置.需要注意的是,隐藏键时应选择为hide().最终关联图如下所示.
(5)编译生成窗口后,可以对其进行测试.
相关阅读 更多 +