目录
1、头文件:form.h。功能实现主要引用数据库保存用户信息,同时使用QPaintEvent事件和QPainter画家来实现。
设计文件操作,可以把这个小功能在桌面上拖动,并且把文件拖到狗身上时会把垃圾吃掉
1、mainwindow.h头文件,包含其他前面所提到的各种类与功能,通过在主窗口调用其他类来实现功能;
2、mianwindow.cpp文件实现布局、菜单、工具栏、以及各种文件、样式、颜色字体的设计
一、注册登录功能
1、头文件:form.h。功能实现主要引用数据库保存用户信息,同时使用QPaintEvent事件和QPainter画家来实现。
#ifndef FORM_H
#define FORM_H
#include <QWidget>
#include <QMediaPlayer>
#include <QTimeEdit>
#include <QTimer>
#include <QMainWindow>
#include "mainwindow.h"
#include <QWidget>
#include <QSqlDatabase>
#include <QPaintEvent>
#include <QPainter>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
signals:
void loginsuccess();
public:
explicit Form(QWidget *parent = 0);
~Form();
private slots:
void on_pushButton_2_clicked();
void on_pushButton_clicked();
bool selectdatabase(QString user, QString pass);
void insertdatabase(QString user, QString pass);
private:
Ui::Form *ui;
void paintEvent(QPaintEvent *event);
QSqlDatabase db;
};
#endif // FORM_H
2、form.cpp实现功能代码
#include "form.h"
#include "ui_form.h"
#include <QMessageBox>
#include <QSqlQuery>
#include <QDebug>
#include <QDialog>
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
//创建数据库
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("user_pass");
bool ok = db.open();
//建表
QSqlQuery query("create table USERPASS('user', 'pass')");
}
Form::~Form()
{
delete ui;
}
bool Form::selectdatabase(QString user, QString pass)
{
//查询数据库
QSqlQuery query(QString("select * from USERPASS where user='%0' and pass='%1'").arg(user).arg(pass));
while (query.next()) {
QString str = query.value(0).toString();
QString str1 = query.value(1).toString();
qDebug()<<str << str1;
return true;
}
return false;
}
void Form::insertdatabase(QString user, QString pass)
{
//插入数据库
QSqlQuery query(QString("insert into USERPASS values('%0','%1')").arg(user).arg(pass));
}
void Form::on_pushButton_2_clicked()
{
//if(ui->lineEdit_user->text() == ui->lineEdit_pass->text())
if(selectdatabase(ui->lineEdit_user->text(), ui->lineEdit_pass->text()))
{
emit loginsuccess();
close();
}
else
QMessageBox::warning(this, "提示", "账号或密码错误", QMessageBox::Ok);
}
void Form::on_pushButton_clicked()
{
insertdatabase(ui->lineEdit_user->text(), ui->lineEdit_pass->text());
}
void Form::paintEvent(QPaintEvent *event)
{
QPainter *painter = new QPainter(this);
QPixmap pic = QPixmap(":/picture/moon.png");
//pic = pic.scaled(this->width(),this->height());
painter->drawPixmap(0,0,this->width(),this->height(),pic);
}
3、效果
二、闹钟功能
1、form1.h文件:定义了单选按钮和普通按键来实现闹钟的开始与选择闹铃
#ifndef FORM1_H
#define FORM1_H
#include <QWidget>
#include <QWidget>
#include <QMediaPlayer>
#include <QTimeEdit>
#include <QTimer>
#include <QMainWindow>
#include "mainwindow.h"
#include <QPaintEvent>
#include <QPainter>
namespace Ui {
class Form1;
}
class Form1 : public QWidget
{
Q_OBJECT
public:
explicit Form1(QWidget *parent = nullptr);
~Form1();
public slots:
void TimerResponse(); //时间响应槽,不断检测:判断时间是否到响铃时间
void on_pushButtonSet_clicked();
void on_pushButtonControl_clicked();
void on_pushButtonReset_clicked();
void on_radioButtonMusicOne_clicked();
void on_radioButtonMusicTwo_clicked();
void on_radioButtonMusicThree_clicked();
private:
Ui::Form1 *ui;
QTimer *m_myTimer = new QTimer();
QMediaPlayer *player = new QMediaPlayer;
QTime m_Temp;
int tt = 0;
Form1 *clok;
void paintEvent(QPaintEvent *event);
};
#endif // FORM1_H
2、form1.cpp文件,实现功能
#include "form1.h"
#include "ui_form1.h"
#include <QLCDNumber>
#include "mainwindow.h"
#include "ui_mainwindow.h"
Form1::Form1(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form1)
{
ui->setupUi(this);
connect(m_myTimer, SIGNAL(timeout()), this, SLOT(TimerResponse()));
player->setVolume(50);//设置播放音量
}
void Form1::TimerResponse()
{
if(m_Temp.hour() == QTime::currentTime().hour()&&
m_Temp.minute() == QTime::currentTime().minute())
{
qDebug() << "响铃";
player->play(); //播放音乐
m_myTimer->stop(); //停止播放
}
}
void Form1::on_pushButtonSet_clicked()
{
m_Temp = ui->timeEdit->time();
m_myTimer->start(500);//计时器开始计时,每隔0.5毫秒发出信号
qDebug() << "计时开始!";
}
void Form1::on_pushButtonControl_clicked()
{
tt++;
if(tt == 10) tt = 0;
else if(tt % 2 == 1)
player->play();
else
player->stop();
}
void Form1::on_pushButtonReset_clicked()
{
player->stop();
m_myTimer->stop();//停止计时
}
void Form1::on_radioButtonMusicOne_clicked()
{
player->setMedia(QUrl::fromLocalFile(":/music/乔佳旭 - 雪下的时候.mp3"));
}
void Form1::on_radioButtonMusicTwo_clicked()
{
player->setMedia(QUrl::fromLocalFile(":/music/王蓝茵 - 恶作剧.mp3"));
}
void Form1::on_radioButtonMusicThree_clicked()
{
player->setMedia(QUrl::fromLocalFile(":/music/许嵩 - 有何不可.mp3"));
}
Form1::~Form1()
{
delete ui;
}
void Form1::paintEvent(QPaintEvent *event)
{
QPainter *painter = new QPainter(this);
QPixmap pic = QPixmap(":/picture/bridge.png");
//pic = pic.scaled(this->width(),this->height());
painter->drawPixmap(0,0,this->width(),this->height(),pic);
}