下载地址如下:
部分页面效果图如下:
UI界面信息如下
1、widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPixmap>
#include <QDateTime>
#include <QTimer>
#include <QPainter>
#include <QPen>
#include <QPaintEvent>
#include <QDebug>
#include <QDesktopWidget>
#include <QFileDialog>
#include <QMessageBox>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
QTimer *timer;
void connect_all();
void Init_View();
void Set_QSS();
public://空调
bool air_flag=false;
public slots:
void time_update();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
2、widget.c
#include "widget.h"
#include "ui_widget.h"
#include <QScrollArea>
#include <QHBoxLayout>
Widget::Widget(QWidget *parent) ://构造函数
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
Set_QSS();
connect_all();
Init_View();
}
//=====================================================================================
Widget::~Widget()//析构函数
{
delete ui;
}
void Widget::Set_QSS()//设置样式
{
QFile file(":/Qss/QSS.qss");
file.open(QFile::ReadOnly);
QString styleSheet = tr(file.readAll());
this->setStyleSheet(styleSheet);
file.close();
}
void Widget::Init_View()//控件初始化
{
timer = new QTimer;
timer->start(1000);
connect(timer,SIGNAL(timeout()),this,SLOT(time_update()));
QDesktopWidget *desktop=QApplication::desktop();
move((desktop->width()-this->width())/2,(desktop->height()-this->height())/2);//应用显示桌面中央
this->setWindowFlags(Qt::FramelessWindowHint);//去除标题栏
ui->stackedWidget->setCurrentIndex(0);
ui->lineEdit_phone->setFocusPolicy(Qt::NoFocus);
}
//=====================================================================================
void Widget::connect_all()//连接槽函数
{
/*******************************************************
主要页面
*******************************************************/
connect(ui->toolButton_main,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(0);
});
connect(ui->toolButton_setting,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(1);
});
connect(ui->toolButton_hall,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(2);
});
connect(ui->toolButton_mainbedroom,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(3);
});
connect(ui->toolButton_secondbedroom,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(4);
});
connect(ui->toolButton_kitchen,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(5);
});
connect(ui->toolButton_bathroom,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(6);
});
connect(ui->toolButton_music,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(7);
});
connect(ui->toolButton_movie,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(8);
});
connect(ui->toolButton_aircondition,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(9);
});
connect(ui->toolButton_phone,QToolButton::clicked,[=]{
ui->stackedWidget->setCurrentIndex(10);
});
/*******************************************************
空调页面
*******************************************************/
connect(ui->toolButton_ADDtem,QToolButton::clicked,[=]{
if(air_flag)
{
QString cur_tem=ui->label_tem->text();
int cur_tem_2=cur_tem.toInt();
ui->label_tem->setText(QString::number(++cur_tem_2));
}
});
connect(ui->toolButton_DEtem,QToolButton::clicked,[=]{
if(air_flag)
{
QString cur_tem=ui->label_tem->text();
int cur_tem_2=cur_tem.toInt();
ui->label_tem->setText(QString::number(--cur_tem_2));
}
});
connect(ui->toolButton_ADDwet,QToolButton::clicked,[=]{
if(air_flag)
{
QString cur_wet=ui->label_wet->text();
int cur_wet_2=cur_wet.toInt();
ui->label_wet->setText(QString::number(++cur_wet_2));
}
});
connect(ui->toolButton_DEwet,QToolButton::clicked,[=]{
if(air_flag)
{
QString cur_wet=ui->label_wet->text();
int cur_wet_2=cur_wet.toInt();
ui->label_wet->setText(QString::number(--cur_wet_2));
}
});
connect(ui->toolButton_open,QToolButton::clicked,[=]{
air_flag=!air_flag;
if(air_flag)
{
ui->label_tem->setText("21");
ui->label_tem_2->setText("℃");
ui->label_wet->setText("45");
ui->label_wet_2->setText("%");
ui->label_mode->setText("自动");
ui->label_airflag->setText("开");
}
else
{
ui->label_tem->setText("");
ui->label_wet->setText("");
ui->label_tem_2->setText("");
ui->label_wet_2->setText("");
ui->label_mode->setText("");
ui->label_airflag->setText("关");
}
});
connect(ui->toolButton_auto,QToolButton::clicked,[=]{
if(air_flag)
{
ui->label_tem->setText("26");
ui->label_tem_2->setText("℃");
ui->label_wet->setText("55");
ui->label_wet_2->setText("%");
ui->label_mode->setText("自动");
}
});
connect(ui->toolButton_cold,QToolButton::clicked,[=]{
if(air_flag)
{
ui->label_mode->setText("制冷");
}
});
connect(ui->toolButton_hat,QToolButton::clicked,[=]{
if(air_flag)
{
ui->label_mode->setText("加热");
}
});
connect(ui->toolButton_swing,QToolButton::clicked,[=]{
if(air_flag)
{
ui->label_mode->setText("送风");
}
});
connect(ui->toolButton_outwet,QToolButton::clicked,[=]{
if(air_flag)
{
ui->label_mode->setText("除湿");
}
});
/*******************************************************
拨号页面
*******************************************************/
connect(ui->toolButton_Btn_0,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"0";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_1,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"1";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_2,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"2";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_3,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"3";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_4,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"4";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_5,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"5";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_6,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"6";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_7,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"7";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_8,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"8";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_9,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number+"9";
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_Btn_backspace,QToolButton::clicked,[=]{
QString number = ui->lineEdit_phone->text();
number=number.mid(0,number.length()-1);
ui->lineEdit_phone->setText(number);
});
connect(ui->toolButton_call_in_2,QToolButton::clicked,[=]{
if(!(ui->lineEdit_phone->text().isEmpty()))
QMessageBox::about(NULL, "About", "拨号中");
});
connect(ui->toolButton_call_out,QToolButton::clicked,[=]{
if(!(ui->lineEdit_phone->text().isEmpty()))
QMessageBox::about(NULL, "About", "挂断");
});
/*******************************************************
其他控件
*******************************************************/
connect(ui->widget_1,SwitchButton::checkedChanged,[=]{
bool check_flag = ui->widget_1->getChecked();
// if(check_flag)
// {
// QMessageBox::about(NULL, "灯光控制", "大吊灯已打开");
// }
// else
// {
// QMessageBox::about(NULL, "灯光控制", "大吊灯已关闭");
// }
});
connect(ui->widget_2,SwitchButton::checkedChanged,[=]{
bool check_flag = ui->widget_2->getChecked();
// if(check_flag)
// {
// QMessageBox::about(NULL, "灯光控制", "环形灯已打开");
// }
// else
// {
// QMessageBox::about(NULL, "灯光控制", "环形灯已关闭");
// }
});
connect(ui->widget_3,SwitchButton::checkedChanged,[=]{
bool check_flag = ui->widget_3->getChecked();
// if(check_flag)
// {
// QMessageBox::about(NULL, "灯光控制", "台灯已打开");
// }
// else
// {
// QMessageBox::about(NULL, "灯光控制", "台灯已关闭");
// }
});
}
//=====================================================================================
void Widget::time_update()//时间更新
{
QDateTime time = QDateTime::currentDateTime();
QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd");
ui->label_time->setText(str);
}
3、QSS.qss
QWidget#Widget
{
background-color: rgb(0, 72, 106);
border-radius: 50px;
}
QWidget#widget_4
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QListView#listView
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_main
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_setting
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_hall
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_mainbedroom
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_secondbedroom
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_kitchen
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_bathroom
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_music
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_movie
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_aircondition
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QWidget#page_phone
{
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
QLineEdit#lineEdit_phone
{
font: 75 italic 40pt "Arial";
color: rgb(213, 106, 0);
border: 1px solid #32435E;
border-radius: 5px; /*控件边框的弧度,数值越大,则弯曲得越厉害*/
/* padding: 0 8px; */
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, /*背景*/
stop: 0 #113845,
stop: 1.0 #15A8FF);
selection-background-color: #0A246A;
}
/*Home页面*/
QToolButton#toolButton_main
{
border-image: url(:/Home/Home.png);
}
QToolButton#toolButton_movie
{
border-image: url(:/Home/Moive.png);
}
QToolButton#toolButton_aircondition
{
border-image: url(:/Home/Aircondition.png);
}
QToolButton#toolButton_music
{
border-image: url(:/Home/Music.png);
}
QToolButton#toolButton_phone
{
border-image: url(:/Home/Phone.png);
}
QToolButton#toolButton_setting
{
border-image: url(:/Home/Setting.png);
}
QLabel#label_35
{
border-image: url(:/Home/Signal.png);
}
QLabel#label_33
{
border-image: url(:/Home/Power.png);
}
QToolButton#toolButton_hall
{
border-image: url(:/Home/hall.jpeg);
}
QToolButton#toolButton_mainbedroom
{
border-image: url(:/Home/mainbedroom.jpg);
}
QToolButton#toolButton_secondbedroom
{
border-image: url(:/Home/secondbedroom.jpg);
}
QToolButton#toolButton_kitchen
{
border-image: url(:/Home/kitchen.jpg);
}
QToolButton#toolButton_bathroom
{
border-image: url(:/Home/bathroom.jpg);
}
QLabel#label
{
color: rgb(255, 255, 255);
}
QLabel#label_time
{
color: rgb(255, 255, 255);
}
/*Aircondition页面*/
QToolButton#toolButton_ADDtem
{
border-image: url(:/Aircondition/Add.png);
}
QToolButton#toolButton_ADDwet
{
border-image: url(:/Aircondition/Add.png);
}
QToolButton#toolButton_DEtem
{
border-image: url(:/Aircondition/Decrease.png);
}
QToolButton#toolButton_DEwet
{
border-image: url(:/Aircondition/Decrease.png);
}
QToolButton#toolButton_auto
{
border-image: url(:/Aircondition/Auto.png);
}
QToolButton#toolButton_cold
{
border-image: url(:/Aircondition/Cold.png);
}
QToolButton#toolButton_hat
{
border-image: url(:/Aircondition/Hat.png);
}
QToolButton#toolButton_open
{
border-image: url(:/Aircondition/Start.png);
}
QToolButton#toolButton_outwet
{
border-image: url(:/Aircondition/DecreaseWeat.png);
}
QToolButton#toolButton_swing
{
border-image: url(:/Aircondition/Swing.png);
}
QLabel#label_cold
{
border-image: url(:/Aircondition/Cold.png);
}
QLabel#label_hat
{
border-image: url(:/Aircondition/Hat.png);
}
QLabel#label_swing
{
border-image: url(:/Aircondition/Swing.png);
}
QLabel#label_outwet
{
border-image: url(:/Aircondition/DecreaseWeat.png);
}
QLabel#label_tem
{
color: rgb(223, 149, 0);
}
QLabel#label_wet
{
color: rgb(223, 149, 0);
}
QLabel#label_airflag
{
color: rgb(223, 149, 0);
}
QLabel#label_mode
{
color: rgb(223, 149, 0);
}
/*Phone页面*/
QToolButton#toolButton_Btn_0
{
border-image: url(:/Call/f1.png);
}
QToolButton#toolButton_Btn_1
{
border-image: url(:/Call/f2.png);
}
QToolButton#toolButton_Btn_2
{
border-image: url(:/Call/f3.png);
}
QToolButton#toolButton_Btn_3
{
border-image: url(:/Call/f4.png);
}
QToolButton#toolButton_Btn_4
{
border-image: url(:/Call/f5.png);
}
QToolButton#toolButton_Btn_5
{
border-image: url(:/Call/f6.png);
}
QToolButton#toolButton_Btn_6
{
border-image: url(:/Call/f7.png);
}
QToolButton#toolButton_Btn_7
{
border-image: url(:/Call/f8.png);
}
QToolButton#toolButton_Btn_8
{
border-image: url(:/Call/f9.png);
}
QToolButton#toolButton_Btn_9
{
border-image: url(:/Call/f10.png);
}
QToolButton#toolButton_call_in_2
{
border-image: url(:/Call/Call.png);
}
QToolButton#toolButton_call_out
{
border-image: url(:/Call/Call_off.png);
}
QToolButton#toolButton_Btn_backspace
{
border-image: url(:/Call/Delete.png);
}
/*Moive
QToolButton#toolButton_decrease_2
{
border-image: url(:/Media/Speed_down.png);
}
QToolButton#toolButton_down_2
{
border-image: url(:/Media/Next.png);
}
QToolButton#toolButton_increase_2
{
border-image: url(:/Media/Speed_up.png);
}
QToolButton#toolButton_open_2
{
border-image: url(:/Media/Open.png);
}
QToolButton#toolButton_pause_2
{
border-image: url(:/Media/Terminal.png);
}
QToolButton#toolButton_play_2
{
border-image: url(:/Media/Start.png);
}
QToolButton#toolButton_stop_2
{
border-image: url(:/Media/Stop.png);
}
QToolButton#toolButton_up_2
{
border-image: url(:/Media/Up.png);
}*/
/*Music*/
QToolButton#toolButton_decrease
{
border-image: url(:/Media/Speed_down.png);
}
QToolButton#toolButton_down
{
border-image: url(:/Media/Next.png);
}
QToolButton#toolButton_increase
{
border-image: url(:/Media/Speed_up.png);
}
QToolButton#toolButton_open_3
{
border-image: url(:/Media/Open.png);
}
QToolButton#toolButton_pause
{
border-image: url(:/Media/Terminal.png);
}
QToolButton#toolButton_play
{
border-image: url(:/Media/Start.png);
}
QToolButton#toolButton_stop
{
border-image: url(:/Media/Stop.png);
}
QToolButton#toolButton_up
{
border-image: url(:/Media/Up.png);
}
/*===========================================================*/
// 设置垂直滚动条基本样式
QScrollBar:vertical
{
width:8px;
background:rgba(0,0,0,0%);
margin:0px,0px,0px,0px;
padding-top:9px; // 留出9px给上面和下面的箭头
padding-bottom:9px;
}
QScrollBar::handle:vertical
{
width:8px;
background:rgba(0,0,0,25%);
border-radius:4px; // 滚动条两端变成椭圆
min-height:20;
}
QScrollBar::handle:vertical:hover
{
width:8px;
background:rgba(0,0,0,50%); // 鼠标放到滚动条上的时候,颜色变深
border-radius:4px;
min-height:20;
}
QScrollBar::add-line:vertical // 这个应该是设置下箭头的,3.png就是箭头
{
height:9px;width:8px;
border-image:url(:/images/a/3.png);
subcontrol-position:bottom;
}
QScrollBar::sub-line:vertical // 设置上箭头
{
height:9px;width:8px;
border-image:url(:/images/a/1.png);
subcontrol-position:top;
}
QScrollBar::add-line:vertical:hover // 当鼠标放到下箭头上的时候
{
height:9px;width:8px;
border-image:url(:/images/a/4.png);
subcontrol-position:bottom;
}
QScrollBar::sub-line:vertical:hover // 当鼠标放到下箭头上的时候
{
height:9px;width:8px;
border-image:url(:/images/a/2.png);
subcontrol-position:top;
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical // 当滚动条滚动的时候,上面的部分和下面的部分
{
background:rgba(0,0,0,10%);
border-radius:4px;
}