Qt桌面工具包

本文详细介绍了使用Qt进行桌面应用开发的过程,包括注册登录功能的实现,利用数据库和QPaintEvent绘制;闹钟功能的创建,通过单选按钮和按键控制;垃圾狗小功能,允许用户拖放文件并模拟删除;主窗口的设计,包括布局、菜单和工具栏;以及项目的主要源文件如main.cpp和.pro文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、注册登录功能

1、头文件:form.h。功能实现主要引用数据库保存用户信息,同时使用QPaintEvent事件和QPainter画家来实现。

2、form.cpp实现功能代码

3、效果

二、闹钟功能

 2、form1.cpp文件,实现功能

3、效果

三、垃圾狗

设计文件操作,可以把这个小功能在桌面上拖动,并且把文件拖到狗身上时会把垃圾吃掉

 2、formdog.cpp文件实现功能

3、效果图

四、主窗口功能

1、mainwindow.h头文件,包含其他前面所提到的各种类与功能,通过在主窗口调用其他类来实现功能;

 2、mianwindow.cpp文件实现布局、菜单、工具栏、以及各种文件、样式、颜色字体的设计

3、效果图

 五、main.cpp与.pro文件

1、main.cpp

2、qtproject.pro

六、总结



一、注册登录功能

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


}

3、效果

三、垃圾狗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值