基於Qt的車載GPS監控系統(5)溫度設置
設置界面
界面的類構成
基類:SetDialog 實現子功能界面通用的共性元素,背景設置,系統標題,子功能名稱,返回按鈕。
派生類:AlarmDialog 實現溫度上限,下限,當前值的顯示與設置功能。
設置對話框頭文件
#ifndef SETDIALOG_H
#define SETDIALOG_H
#include <QtGui>
#include <QDebug>
#include"dht9000.h"
class SetDialog : public QDialog
{
Q_OBJECT
public:
SetDialog(QWidget *parent=0);
protected:
QLineEdit * lineTitle;
struct st_sys_dev g_dev[1];
QToolButton *buttonSet;
private:
QLabel *labelBg;
};
#endif // SETDIALOG_H
設置對話框實現文件
#include "setdialog.h"
#include "dht9000.h"
#include<QtGui>
#include<QDebug>
SetDialog::SetDialog( QWidget *parent)
: QDialog( parent)
{
load_dev(g_dev);
this->setWindowIcon(QPixmap( ":/images/1.png") );
this->setWindowTitle(tr("GP9001車載GPS監控系統"));
this->setMinimumSize(800,480);
this->setMaximumSize(800,480);
labelBg = new QLabel(this);
labelBg->setGeometry(QRect(0, 0, 800, 480));
labelBg->setPixmap(QPixmap(":/images/9001bg.jpg"));
labelBg->setScaledContents(true);
lineTitle = new QLineEdit(this);
//設置顯示數字字體大小
QFont font = lineTitle->font();
font.setPointSize(font.pointSize() + 5);
lineTitle->setFont(font);
lineTitle->setText(tr("系統設置"));
lineTitle->setReadOnly(true);
lineTitle->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
lineTitle->setGeometry(QRect(300, 90, 200, 35));
buttonSet = new QToolButton(this);
buttonSet->setGeometry(QRect(350, 360, 100, 100));
buttonSet->setText( tr( "保存/退出" ) );
buttonSet->setIcon( QPixmap( ":/images/5.png") );
buttonSet->setIconSize( QPixmap( ":/images/5.png").size() );
buttonSet->setAutoRaise( TRUE );
buttonSet->setToolButtonStyle( Qt::ToolButtonTextUnderIcon);
connect(buttonSet,SIGNAL(clicked()),this,SLOT(accept()));
}
溫度設置頭文件
ifndef ALARMDIALOG_H
#define ALARMDIALOG_H
#include "setdialog.h"
class AlarmDialog:public SetDialog
{
Q_OBJECT
public:
AlarmDialog(QWidget *parent = 0);
public slots:
void saveDev();
private:
QLabel *labTempUp;
QSpinBox *spinTempUp;
QSlider *slidTempUp;
QLabel *labTempLow;
QSpinBox *spinTempLow;
QSlider *slidTempLow;
QLabel *labHumiUp;
QSpinBox *spinHumiUp;
QSlider *slidHumiUp;
};
#endif // ALARMDIALOG_H
溫度設置實現程序
#include"alarmdialog.h"
AlarmDialog::AlarmDialog(QWidget *parent)
:SetDialog(parent)
{
this->lineTitle->setText(tr("溫度設置"));
load_dev(g_dev);
//設置溫度上限值
labTempUp = new QLabel(this);
labTempUp->setText(tr("設置溫度上限值:"));
labTempUp->setGeometry(QRect(200, 170, 100, 25));
spinTempUp = new QSpinBox(this);
spinTempUp->setRange(20,50);
spinTempUp->setGeometry(QRect(310, 170, 60, 25));
spinTempUp->setValue(g_dev->alarm_set.temp_upper);
slidTempUp = new QSlider(this);
slidTempUp->setRange(20,50);
slidTempUp->setOrientation(Qt::Horizontal);
slidTempUp->setGeometry(QRect(380, 170, 260, 25));
slidTempUp->setValue(g_dev->alarm_set.temp_upper);
connect(spinTempUp,SIGNAL(valueChanged(int)),slidTempUp,SLOT(setValue(int)));
connect(slidTempUp,SIGNAL(valueChanged(int)),spinTempUp,SLOT(setValue(int)));
//設置溫度下限值
labTempLow = new QLabel(this);
labTempLow->setText(tr("設置溫度下限值:"));
labTempLow->setGeometry(QRect(200, 220, 100, 25));
spinTempLow = new QSpinBox(this);
spinTempLow->setRange(-30,15);
spinTempLow->setGeometry(QRect(310, 220, 60, 25));
spinTempLow->setValue(g_dev->alarm_set.temp_lower);
slidTempLow = new QSlider(this);
slidTempLow->setRange(-30,15);
slidTempLow->setOrientation(Qt::Horizontal);
slidTempLow->setGeometry(QRect(380, 220, 260, 25));
slidTempLow->setValue(g_dev->alarm_set.temp_lower);
connect(spinTempLow,SIGNAL(valueChanged(int)),slidTempLow,SLOT(setValue(int)));
connect(slidTempLow,SIGNAL(valueChanged(int)),spinTempLow,SLOT(setValue(int)));
//設置車廂溫度
labHumiUp = new QLabel(this);
labHumiUp->setText(tr("設置車廂溫度值:"));
labHumiUp->setGeometry(QRect(200, 270, 100, 25));
spinHumiUp = new QSpinBox(this);
spinHumiUp->setRange(-30,20);
spinHumiUp->setGeometry(QRect(310, 270, 60, 25));
spinHumiUp->setValue(g_dev->alarm_set.temp);
slidHumiUp = new QSlider(this);
slidHumiUp->setRange(-30,20);
slidHumiUp->setOrientation(Qt::Horizontal);
slidHumiUp->setGeometry(QRect(380, 270, 260, 25));
slidHumiUp->setValue(g_dev->alarm_set.temp);
connect(spinHumiUp,SIGNAL(valueChanged(int)),slidHumiUp,SLOT(setValue(int)));
connect(slidHumiUp,SIGNAL(valueChanged(int)),spinHumiUp,SLOT(setValue(int)));
connect(this->buttonSet,SIGNAL(clicked()),this,SLOT(saveDev()));
}
void AlarmDialog::saveDev()
{
g_dev->alarm_set.temp_upper = spinTempUp->value();
g_dev->alarm_set.temp_lower = spinTempLow->value();
g_dev->alarm_set.temp = spinHumiUp->value();
save_dev(g_dev);
}