主界面设计
图片自己找的,界面排版自己设计的,有参考正点原子的项目。其中每个模块的功能代码后续会再陆续更新发布。底部按钮只设置了中间三个按钮的功能。
一、ui界面部分
二、代码实现部分功能
(1)appdemo.h代码
#ifndef APPDEMO_H
#define APPDEMO_H
//QT_BEGIN_NAMESPACE
namespace Ui { class AppDemo; }
//QT_END_NAMESPACE
#include <QWidget>
#include <QFile>
#include <QDebug>
// 时间显示+闹钟
#include <QLCDNumber>
#include <QTime>
#include <QTimer>
#include <QDateTime>
#include <QFont>
#include <QString>
#include <QLocale>
#include "../musicplayer/musicplayer.h"
class AppDemo :public QWidget
{
Q_OBJECT
public:
AppDemo(QWidget *parent = nullptr);
~AppDemo();
private:
Ui::AppDemo *ui;
// 时间显示+闹钟
QTimer *timer;
// 灯光
QFile file;
// 设置LED状态
void setLedState(bool);
MusicPlayer *musicplayer;
private slots:
void on_mid_pushButton_3_clicked();
void on_mid_pushButton_4_clicked();
void on_mid_pushButton_1_clicked();
// 定时器定时刷新时间
void timerTimeout();
void on_mid_pushButton_5_clicked();
void on_mid_pushButton_2_clicked();
void on_mid_pushButton_6_clicked(bool checked);
void on_top_pushButton_4_clicked(bool checked);
void on_bottom_pushButton_5_clicked();
void on_bottom_pushButton_1_clicked();
void on_bottom_pushButton_3_clicked();
void on_bottom_pushButton_2_clicked(bool checked);
signals:
void hide_main();
void camera();
void music();
void video();
void weather();
void map();
void demo_musicnext();
void demo_musicprevious();
void demo_musicplay();
};
#endif // APPDEMO_H
(2)appdemo.cpp文件
#include "appdemo.h"
#include "ui_appdemo.h"
AppDemo::AppDemo(QWidget *parent)
: QWidget(parent)
, ui(new Ui::AppDemo)
{
ui->setupUi(this);
/*默认是出厂系统的 LED 心跳的触发方式,想要控制 LED,
* 需要改变 LED 的触发方式,改为 none,即无*/
system("echo none > /sys/class/leds/sys-led/trigger");
file.setFileName("/sys/devices/platform/leds/leds/sys-led/brightness"); //light
// 时间显示
timer = new QTimer(this);
QLocale locale = QLocale::Chinese;//指定中文显示
QTime time = QTime::currentTime();
QDateTime datetime = QDateTime::currentDateTime();
QString str1 = time.toString("hh:mm:ss");
QString str2 = datetime.toString("yyyy-MM-dd");
QString str3 = locale.toString(datetime,"dddd");
ui->mid_pushButton->setText(str1+"\n\n"+str2+"\n\n"+str3);
// 底层按键设置
musicplayer = new MusicPlayer();
connect(timer,SIGNAL(timeout()),this,SLOT(timerTimeout()));
timer->start(100);
}
AppDemo::~AppDemo()
{
delete ui;
}
// 时间显示,定时器定时刷新时间
void AppDemo::timerTimeout()
{
// QFont font("Roma",20,50);
QLocale locale = QLocale::Chinese;//指定中文显示
QTime time = QTime::currentTime();
QDateTime datetime = QDateTime::currentDateTime();
QString str1 = time.toString("hh:mm:ss");
QString str2 = datetime.toString("yyyy-MM-dd");
QString str3 = locale.toString(datetime,"dddd");
ui->mid_pushButton->setText(str1+"\n\n"+str2+"\n\n"+str3);
}
// 倒车监控,隐藏主界面,显示监控模块界面
void AppDemo::on_mid_pushButton_3_clicked()
{
emit hide_main();
emit camera();
}
// 音乐播放器
void AppDemo::on_mid_pushButton_4_clicked()
{
emit hide_main();
emit music();
}
// 视频播放器
void AppDemo::on_mid_pushButton_1_clicked()
{
emit hide_main();
emit video();
}
// 天气预报
void AppDemo::on_mid_pushButton_5_clicked()
{
emit hide_main();
emit weather();
}
// 百度地图
void AppDemo::on_mid_pushButton_2_clicked()
{
emit hide_main();
emit map();
}
// 夜灯亮灭
void AppDemo::on_mid_pushButton_6_clicked(bool checked)
{
// 如果文件不存在
if(!file.exists())
return;
if(!file.open(QIODevice::ReadWrite))
qDebug()<<file.errorString();
if(checked)
{
ui->mid_pushButton_6->setText("夜灯灭");
file.write("1");
}
else
{
ui->mid_pushButton_6->setText("夜灯亮");
file.write("0");
}
file.close();
}
// 故障灯
void AppDemo::on_top_pushButton_4_clicked(bool checked)
{
// 如果文件不存在
if(!file.exists())
return;
if(!file.open(QIODevice::ReadWrite))
qDebug()<<file.errorString();
if(checked)
system("echo heartbeat > /sys/class/leds/sys-led/trigger");
else
system("echo none > /sys/class/leds/sys-led/trigger");
file.close();
}
// 音乐播放器打开后,底部按键也可控制音乐播放
void AppDemo::on_bottom_pushButton_5_clicked()
{
emit demo_musicnext();
}
void AppDemo::on_bottom_pushButton_1_clicked()
{
emit demo_musicprevious();
}
void AppDemo::on_bottom_pushButton_3_clicked()
{
emit demo_musicplay();
}