- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(QT文档
QT设计文档
QT4的移植及环境配置
本系统使用的是qtopia-core-opensource-src-4.2.2 版本,arm-linux-gcc-3.4.1版本编译器,
移植过程及配置过程已经在参赛文档的用户手册中讲述过,这里不再讲述.
界面功能
基于本系统,分析到用户的需求,此GUI设计了以下的功能:
(1)身份验证机制:用户登录对话框,输入正确的用户名和密码,跳转到主控界面;
(2)前台窗口显示家居信息及等级,对异常能采取报警(图片提示,发报警短信给用户);
(3)用户可以手动设置温度报警的限值,可以手动控制家电的开与关;
(4)用户在得到报警通知后,可以通过发短信采取措施来控制家电;
(5)家居信息(时刻,状况,异常等)应在数据库中存放,方便用户查看当日的环境状况;
(6) 用户可以进入后台数据库,进行更新操作;
(7)可以进行一些设置(接受短信人的号码,串口设置)和显示时间日期,IP;
以下是本GUI系统的结构图:
图1系统的结构图
界面设计及使的相关技术及实现
QtDesigner的运用
本次设计中,使用 QtDesigner设计美化界面,十分方便,省去了写表示层代码的时间。
Singnal and Slots,QThread, QTimer的运用
A. Singnal and Slots的大量运用
在这个工程中,大量应用了信号槽机制,只要当主框架中的,操作函数就会被调用执行响应的操作clicked()与槽showDbManageForm()连接起来,实现进入家居信息界面
QObject::connect(DbManagePushButton,SIGNAL(clicked()),this,SLOT(showDbManageForm()));
将信号clicked()与槽com_set()连接起来,实现串口选择功能
QObject::connect(openpushButton,SIGNAL(clicked()),this,SLOT(com_set()));
将信号clicked()与槽temp_set()连接起来,实现温度报警值设置功能
QObject::connect(TempSpeedSpinBox,SIGNAL(()),this,SLOT(temp_set()));
将信号clicked()与槽power_on()连接起来,实现控制加电开启功能
QObject::connect(okpushButton1,SIGNAL(clicked()),this,SLOT(power_on()));
B. QThread的运用
在嵌入GPRS的模块时,运用了QT线程机制,创建了一个线程,来监听短信的收。当要发短信时,挂起收线程,发送完毕后,又激活监听收短信线程
class gprsMsg : public QThread
void gprsMsg :: run ( )
{
int i = 0;
while ( true )
{
if ( flag == 1 )
{
……
if( strcmp(buf,+CMTI: \SM\,) == 0)
{
……
}
}
}
}
C. QTimer的运用
为了从服务器及时获得最新的家居信息数据,便于及时更新,在设计中使用了Qt的定时器。每隔3秒去主动获取最新数据信息。如下:
QTimer *timer=new QTimer(this);
QObject::connect(timer,SIGNAL(timeout()),this,SLOT(getInfo()));
timer-start(3000);
其中getInfo()为获取信息的槽函数。
Double Buffering技术
在本次设计中对一些组件进行了扩展与定制,如主控窗口图4中的温度计,QDial都是重新定制的,绘制过程中坐标转换,刷新等比较耗资源,再加上界面系统本身比较大,图片资源丰富,所以运用了双缓冲技术,以减轻画面的闪烁,使USB鼠标等在开发板上更流畅。
图2 组件qsynthKnob效果
在绘制上图过程中:
1.在构造函数中声明QPixmap pix;
2.在绘图事件中paintEvent ( QPaintEvent * e)中
QStylePainter pm(this);
QRect ur=pPaintEvent-rect();//得到组件尺寸
pix=QPixmap(ur.size());//以此为参数创建一个位图变量
pix.fill(this,ur.topLeft());/
文档评论(0)