由于QT本身不自带arm的串口函数,用了别人写的串口函数添加到QT工程中。从网上下载qextserialport-1.2win-alpha.zip
将posix_qextserialport.h、qextserialbase.h两个头文件添加到工程
登录界面
图中的按键变色效果:改变样式表 QPushButton { background-color: rgb(0, 170, 255); border-radius: 3px; color: rgb(255, 255, 255); } QPushButton:hover { background-color: rgb(245, 69, 234); }
safegate.h
#ifndef SAFEGATE_H
#define SAFEGATE_H
#include <QDialog>
#include <QProgressDialog>
namespace Ui {
class Safegate;
}
class Safegate : public QDialog
{
Q_OBJECT
public:
explicit Safegate(QWidget *parent = 0);
~Safegate();
QString pwd;
void delay();
signals:
void ask_for_wakeup();
private slots:
void on_num1_clicked();
void on_num2_clicked();
void on_num3_clicked();
void on_num4_clicked();
void on_num5_clicked();
void on_num6_clicked();
void on_num7_clicked();
void on_num8_clicked();
void on_num9_clicked();
void on_num0_clicked();
void on_del_clicked();
void on_enter_clicked();
private:
Ui::Safegate *ui;
};
#endif // SAFEGATE_H
safegate.cpp
#include "safegate.h"
#include "ui_safegate.h"
Safegate::Safegate(QWidget *parent) :
QDialog(parent),
ui(new Ui::Safegate)
{
ui->setupUi(this);
this->setMaximumSize(800,500);
this->setMinimumSize(800,500);
this->setWindowFlags(Qt::FramelessWindowHint);
}
Safegate::~Safegate()
{
delete ui;
}
void Safegate::on_num1_clicked()
{
pwd.append(tr("1"));
ui->lcd->setText(pwd);
}
void Safegate::on_num2_clicked()
{
pwd.append(tr("2"));
ui->lcd->setText(pwd);
}
void Safegate::on_num3_clicked()
{
pwd.append(tr("3"));
ui->lcd->setText(pwd);
}
void Safegate::on_num4_clicked()
{
pwd.append(tr("4"));
ui->lcd->setText(pwd);
}
void Safegate::on_num5_clicked()
{
pwd.append(tr("5"));
ui->lcd->setText(pwd);
}
void Safegate::on_num6_clicked()
{
pwd.append(tr("6"));
ui->lcd->setText(pwd);
}
void Safegate::on_num7_clicked()
{
pwd.append(tr("7"));
ui->lcd->setText(pwd);
}
void Safegate::on_num8_clicked()
{
pwd.append(tr("8"));
ui->lcd->setText(pwd);
}
void Safegate::on_num9_clicked()
{
pwd.append(tr("9"));
ui->lcd->setText(pwd);
}
void Safegate::on_num0_clicked()
{
pwd.append(tr("0"));
ui->lcd->setText(pwd);
}
void Safegate::on_del_clicked()
{
pwd.chop(1);
ui->lcd->setText(pwd);
}
void Safegate::on_enter_clicked()
{
if(pwd == "000000")
{
QProgressDialog dialog(NULL,NULL, 0, 50, this);
dialog.setWindowTitle(tr(""));
dialog.setWindowModality(Qt::WindowModal);
dialog.setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏
dialog.show();
for(int k = 0; k < 50; k++)
{
dialog.setValue(k);
QCoreApplication::processEvents();
if(dialog.wasCanceled())
{
break;
}
}
dialog.setValue(50);
pwd.clear();
ui->lcd->setText(pwd);
emit ask_for_wakeup();
}
else
{
pwd.clear();
pwd = QString(tr("密码错误"));
ui->lcd->setText(pwd);
pwd.clear();
}
}
void Safegate::delay()
{
QProgressDialog dialog(NULL,NULL, 0, 50, this);
dialog.setWindowTitle(tr(""));
dialog.setWindowModality(Qt::WindowModal);
dialog.setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏
dialog.show();
for(int k = 0; k < 50; k++)
{
dialog.setValue(k);
QCoreApplication::processEvents();
if(dialog.wasCanceled())
{
break;
}
}
dialog.setValue(50);
}