QT--简易智能家居框架

下载地址如下:

下载链接

部分页面效果图如下:
在这里插入图片描述
在这里插入图片描述

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;
}

发布了48 篇原创文章 · 获赞 5 · 访问量 2628

猜你喜欢

转载自blog.csdn.net/Mr_robot_strange/article/details/102540006
今日推荐