Qt实现天气预报与PM2.5监测系统(6)系统界面设计

系统UI设计

一个图形化的应用,界面设计非常重要。现在软件企业一般有专门的UI设计师,交互设计师。

首先用绘图软件设计出软件界面的设计稿,确定色彩应用,控件布局,交互方式等。

系统界面主要分为左右两块:
左边为导航区域,最上面显示logo与时间,下方显示切换功能界面的按钮。
右边为内容显示区域,不周的子功能显示的内容不一样。
系统使用统一的蓝色背景界面。

自定义按钮的实现

头文件

#ifndef MYBUTTON_H
#define MYBUTTON_H#include <QtGui>class Button : public QPushButton
{Q_OBJECT
public:Button(QWidget *parent=0);void setButtonPicture(QPixmap pic);void setPressPicture(QPixmap pic);void setReleasePicture(QPixmap pic);void setEnterPicture(QPixmap pic);void setLeavePicture(QPixmap pic);void set_X_Y_width_height(int x, int y, int width, int height);void mousePressEvent (QMouseEvent *event);void mouseReleaseEvent (QMouseEvent *event);void setId(QString id);QString getId(void);
public slots:private:QPixmap *buttonPicture;QPixmap *pressPicture;QPixmap *releasePicture;QPixmap *enterPicture;QPixmap *leavePicture;bool flag;QString buttonId;
};#endif // MYBUTTON_H

实现文件

#include "mybutton.h"Button::Button(QWidget *parent) : QPushButton(parent)
{//保存图片成员初始化buttonPicture = new QPixmap();pressPicture = new QPixmap();releasePicture = new QPixmap();enterPicture = new QPixmap();leavePicture = new QPixmap();//关闭按钮的默认显示this -> setFlat(true);this->setFocusPolicy(Qt::NoFocus);//初始化flagflag=false;}void Button::setButtonPicture(QPixmap pic)
{*buttonPicture = pic;this -> setIcon(QIcon(*buttonPicture));
}void Button::setPressPicture(QPixmap pic)
{*pressPicture = pic;
}void Button::setReleasePicture(QPixmap pic)
{*releasePicture = pic;
}void Button::setEnterPicture(QPixmap pic)
{*enterPicture = pic;
}void Button::setLeavePicture(QPixmap pic)
{*leavePicture = pic;
}void Button::set_X_Y_width_height(int x, int y, int width, int height)
{this -> setIconSize(QSize(width, height));this -> setGeometry(x, y, width, height);
}void Button::mousePressEvent (QMouseEvent *event)
{this -> setIcon (QIcon(*pressPicture));
}void Button::mouseReleaseEvent (QMouseEvent *event)
{this -> setIcon(QIcon(*releasePicture));emit clicked();
}void Button::setId(QString id)
{buttonId = id;
}QString Button::getId()
{return buttonId;
}

主界面实现

SysDialog::SysDialog( QWidget *parent): QDialog( parent)
{this->setMinimumSize(1024,600);this->setMaximumSize(1024,600);this->setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏 this->setWindowIcon(QPixmap( ":/images/3.png") );this->setWindowTitle(tr("Air监控系统"));label_pic_bg = new QLabel(this);label_pic_bg->setGeometry(QRect(0, 0, 1024, 600));label_pic_bg->setPixmap(QPixmap(":/images/air_bg1.jpg"));label_pic_bg->setScaledContents(true);//初始化今日天气界面showToday = new ShowToday(this);//初始化一周天气界面,postion valueint x = 250;for(int i=0;i<MAX_DAY;i++){showWeek[i] = new DayData(this);showWeek[i]->setVal(x,100,QString::number(i));showWeek[i]->hide();x += 120;        }//初始化空气质量界面showAqi = new ShowAqi(this);showAqi->hide();//初始化设置界面sysSet = new SysSet(this);sysSet->hide();connect(sysSet,SIGNAL(hourChange(int)),this,SLOT(setHour(int)) );//    QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间//显示时间sysTime = new ShowLabel(this);sysTime->addFontSize(6);sysTime->setGeometry(90,13,100,50);
//    sysTime->setText(time.toString("hh:mm"));flag_time=0;//显示按钮today = new Button(this);today->setButtonPicture(QPixmap( ":/images/air_button1.png"));today->setPressPicture(QPixmap( ":/images/air_button11.png"));today->setReleasePicture(QPixmap( ":/images/air_button1.png"));today->setEnterPicture(QPixmap( ":/images/air_button11.png"));today->setReleasePicture(QPixmap( ":/images/air_button1.png"));today->set_X_Y_width_height(20,150,160,60);connect(today,SIGNAL(clicked()),this,SLOT(goShowToday()) );week = new Button(this);...week->set_X_Y_width_height(20,250,160,60);connect(week,SIGNAL(clicked()),this,SLOT(goShowWeek()) );aqi = new Button(this);...aqi->set_X_Y_width_height(20,350,160,60);connect(aqi,SIGNAL(clicked()),this,SLOT(goShowAqi()) );systemSet = new Button(this);...systemSet->set_X_Y_width_height(20,450,160,60);connect(systemSet,SIGNAL(clicked()),this,SLOT(goSet()) );myProcess = new QProcess(parent);//get day_date from python file,update showthis->get_day_value();showToday->updateVal(dayArr);this->get_week_value();for(int i=0;i<MAX_DAY;i++){showWeek[i]->updateVal(weekArr[i]);}aqiArr[0] = dayArr[13];//pm2.5aqiArr[1] = dayArr[12];//pm10aqiArr[2] = dayArr[15];//aqiaqiArr[3] = aqiArr[0];//pm2.5 localaqiArr[4] = dayArr[0];showAqi->updateVal(aqiArr);QFile f("/home/fa/timer_file");if(!f.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug() << "Open failed." << endl;hourNum = 6;}else{QTextStream fStream(&f);QString readBuf =  fStream.readLine();hourNum = readBuf.toInt();f.close();}QString HourN = QString::number(hourNum);sysSet->setSysInit(dayArr[0],HourN);temp_timer = 0;net_timer = 0;
#ifdef ARMPM25Init();
#endif//计时器对象,500ms钟发送一个timeout()信号,调用showState()函数QTimer *timer = new QTimer(this);timer->start(1000);connect(timer, SIGNAL(timeout()), this, SLOT(updateSYS()));}

按钮点击slot函数(实现界面切换)

void SysDialog::goShowToday()
{if( !(showWeek[0]->isHidden()) ){for(int i=0;i<MAX_DAY;i++)showWeek[i]->hide();}if( !(showAqi->isHidden()) )showAqi->hide();if( !(sysSet->isHidden()) )sysSet->hide();if( showToday->isHidden())showToday->show();
}

Qt实现天气预报与PM2.5监测系统(6)系统界面设计相关推荐

  1. android 优秀app界面设计,基于Android系统的App界面设计.doc

    基于Android系统的App界面设计 摘 要:智能手机时代的来临改变了大多数人的生活习惯,时至今日智能手机已经成为了人们工作生活中的一部分,在工作生活中发挥着重要的作用.App作为智能手机应用程序的 ...

  2. 用户和计算机通信的界面设计,数据分析系统的交互界面设计

    摘要:针对位置敏感探测器件构成的数据分析系统,借助开发工具及MFC消息映射机制,实现系统交互界面的设计.界面通过对串口通信和USB通信方法的研究,利用按钮控件实现并控制上下位机数据通信:数据传输处理之 ...

  3. oppoa57计算机记录,OPPO A57评测:系统体验和界面设计

    系统篇:小清新的ColorOS 3.0 OPPO A57运行基于Android6.0的colorOS 3.0,和基于Android5.1的colorOS 3.0系统相比,在UI界面和ICON设计上基本 ...

  4. c语言主界面设计菜单系统,c语言界面设计代码的操作步骤,你学会了吗

    学计算机的人都知道C语言,而这也是非常常用的一种计算机编程语言.其实c语言运用得当,完全可以编程很多设计代码,帮助你进行界面设计.今天就让小编为大家介绍c语言界面设计. c语言界面设计代码的操作步骤 ...

  5. 大屏监控系统数据可视化界面设计

    转载于:https://www.cnblogs.com/telwanggs/p/10975619.html

  6. 一个Web系统OA界面设计和开发

    早在中国IT业方兴未艾之时,计算机应用系统主要以功能实现为主,几乎没有界面设计这个概念.时至今日,随着计算机和网络的不断普及,社会信息化程度日益加深,用户和市场的不断成熟,人们已经不仅仅满足于&quo ...

  7. 粉尘监测(基于STM32和Android的PM2.5监测系统)

    基于STM32和Android的PM2.5监测系统 粉尘监测系统 功能:STM32单片机实时通过ADC采集粉尘传感器数据,并通过蓝牙发送至手机端显示粉尘浓度数值.当粉尘浓度大于设定的阈值时候,单片机通 ...

  8. 气象与公共服务监测分析服务系统(MAS)-深圳市千百炼科技有限公司

    风云三号气象卫星监测分析服务系统(MAS)采用当今先进成熟的计算机技术.存储技术.网络数据检索技术.数据库技术.信息动态发布技术.GIS 技术,实现新一代国家气象卫星监测分析服务系统,建立交互式的卫星 ...

  9. C8—Qt实现天气预报

    Qt实现天气预报 场景简介 WeatherWebService网站提供了获取天气数据的访问接口,不过对于免费的用户来讲,一天只能访问50次,超出之后需要付费.本身就提供了查询城市ID,支持城市列表,通 ...

最新文章

  1. 抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法 (native),是否可同时被 synchronized
  2. PHP的.htaccess
  3. dotNet 5 中执行 Node.js
  4. python随机生成k个不重复的随机数_使用Python生成不重复的随机值
  5. oracle把所有表查询权限赋与另一用户
  6. 算法不会,尚能饭否之双向循环链表
  7. python 检测端口是否被占用
  8. 《概率论基础教程》总结 -- 样本空间、概率、条件概率 等
  9. Linux的使用_尚硅谷视频学习笔记
  10. h3 经典地图 第2辑(RPG)
  11. Unity3D Delegate
  12. duilib设置透明窗口_Facebook-duilib 仿 半透明登陆窗口, 简单示例程序,模仿 实现 。 DirextX 240万源代码下载- www.pudn.com...
  13. JavaScript实现涂鸦笔
  14. TApplicaiton.ProcessMessages不能在非主线程使用
  15. 爱普生EPSON实时时钟芯片-RX8900SA
  16. 热烈欢迎中国照明网总经理丁云高一行莅临新起典考察交流
  17. 基于单片机的篮球计分器系统设计(#0456)
  18. 如何读懂python代码_教你如何阅读 Python 开源项目代码
  19. 市场营销1:区块链+AI、市场营销与市场营销流程
  20. 最近玩起了视频,把一点工作总结一下。

热门文章

  1. [Script]Backordered Problematic delivery detail
  2. ISP——黑电平矫正(Black Level correction, BLC)
  3. Telink BLE MESH开发|ble mesh开发教程《三》telink_sig_mesh串口收发数据
  4. 迷你世界进云服务器需要密码,迷你世界云服务器安装
  5. untiy 反向动力学插件 Final IK 详细介绍
  6. 【SpringBoot】SSM“加速器”SpringBoot初体验
  7. monodepth无监督卷积神经网络深度估计代码解析(三)
  8. 心田花开:三年级语文期末复习资料
  9. 说说那些抢票插件的事
  10. Python 教你绘制个人旅行地图,就是那么牛