QT个人项目

目录

        代码思路

        玩法

        具体代码

                        main.cpp(主函数)

                        widget.h

                        mainwindows.h

                        widget.cpp(主界面)

                        mainwindows.cpp(游戏界面)

代码思路

        将整个工程分为两个类,一个类实现主界面,另一个类实现一种游戏模式。

玩法

        

本游戏内容单词均为QT常用类和方法,数据类型等词汇。

玩法:
    在规定时间内,根据左边文本框的单词,在右边文本框中输入相同的单词即可发射子弹将僵尸消灭,尽量在僵尸碰到植物前,将子弹发射出去。

        

main.cpp(主函数)

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

 

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlDatabase>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QLabel>
#include "mainwindow.h"


namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    QSqlDatabase db;

//    int num;
    ~Widget();

private slots:
    void pushButton_clicked();

    void pushButton_2_clicked();

    void pushButton_3_clicked();

    void pushButton_4_clicked();

    void pushButton_5_clicked();

    void insert_into();


private:
    Ui::Widget *ui;

    QWidget *wid;
    QWidget *widget;
    QLineEdit *li;
    QLabel *li1;
    QPushButton *bt;
    QHBoxLayout *hbox;
};

 mainwindows.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include "widget.h"
#include <QKeyEvent>
#include <QSqlQuery>
#include <QPixmap>
#include <QRect>
#include <QLabel>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    QTimer *t;
    QTimer *t1;
    QTimer *t2;
    ~MainWindow();
    void keyPressEvent(QKeyEvent *event);
    QPixmap bullet;
    QRect rect;



public slots:
    void on_pushButton_3_clicked();

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void update_value();

    void map_move();
    void map_move1();

private:
    Ui::MainWindow *ui;
    QWidget *widg;
    QLabel *lb;
    QWidget *widg1;
    QLabel *lb1;
    int val;
    int data;
    int x_pos;
    int y_pos;
    int x_pos1;
    int xpos;
    int ypos;
    int xpos1;


};

#endif // MAINWINDOW_H

widget.cpp(主界面)

#include "widget.h"
#include "ui_widget.h"
#include "mainwindow.h"
#include <QPainter>
#include <QSqlQuery>
#include <QDebug>
#include <QPushButton>
#include <QHBoxLayout>
#include <QProcess>


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    wid = new QWidget;
    wid->setMaximumSize(250,30);
    wid->hide();
    li = new QLineEdit;
    bt = new QPushButton("添加");
    QHBoxLayout *hbox = new QHBoxLayout;
    hbox->addWidget(li);
    hbox->addWidget(bt);
    wid->setLayout(hbox);


    //设置背景
    QPalette PAllbackground = this->palette();
    QImage ImgAllbackground(":/980.jfif");
    QImage fitimgpic=ImgAllbackground.scaled(this->width(),this->height(), Qt::IgnoreAspectRatio);
    PAllbackground.setBrush(QPalette::Window, QBrush(fitimgpic));
    this->setPalette(PAllbackground);


    //创建数据库
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("word.db");
    bool ok = db.open();

    //创建单词库
    QString  str("create table word(word);");
    QSqlQuery query;
    query.exec(str);

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(pushButton_clicked()));
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(pushButton_2_clicked()));
    connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(pushButton_3_clicked()));
    connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(pushButton_4_clicked()));
    connect(ui->pushButton_5,SIGNAL(clicked()),this,SLOT(pushButton_5_clicked()));

}

Widget::~Widget()
{
    delete ui;
}

void Widget::pushButton_clicked()
{
    //普通模式
    MainWindow *wi = new MainWindow;
    wi->show();
    this->close();

}

void Widget::pushButton_2_clicked()
{
    //无尽模式
    widget = new QWidget;
    widget->show();
    li1 = new QLabel("暂未开放");
    QHBoxLayout *hbox1 = new QHBoxLayout;
    hbox1->addWidget(li1);
    widget->setLayout(hbox1);
    li1->setAlignment(Qt::AlignCenter);

}

void Widget::pushButton_3_clicked()
{
    //退出游戏
    close();
}

void Widget::pushButton_4_clicked()
{
    //说明
    QProcess *p = new QProcess;
    p->execute("notepad.exe 1.txt");
}

void Widget::pushButton_5_clicked()
{
    //添加
    wid->show();
    connect(bt,SIGNAL(clicked()),this,SLOT(insert_into()));
}
void Widget::insert_into()
{
    //向入据库中加入一条信息
    QString  str1 = QString("insert into word values('%0');").arg(li->text());
    qDebug() << li->text();
    qDebug() << str1;
    QSqlQuery query1;
    query1.exec(str1);

    QString st = QString("SELECT DISTINCT * FROM WORD;");
    QSqlQuery query2;
    query2.exec(st);
    if(query2.exec()){
            while(query2.next()){
                qDebug() << query2.value(0).toString();
            }
        }

    wid->hide();
}

mainwindows.cpp(游戏界面)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "widget.h"
#include <QSqlQuery>
#include <QMovie>
#include <QTimer>
#include <QDebug>
#include <QKeyEvent>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    widg = new Widget;
    widg->hide();
    //设置背景
    QPalette PAllbackground = this->palette();
    QImage ImgAllbackground(":/f72.jpg");
    QImage fitimgpic=ImgAllbackground.scaled(this->width(),this->height(), Qt::IgnoreAspectRatio);
    PAllbackground.setBrush(QPalette::Window, QBrush(fitimgpic));
    this->setPalette(PAllbackground);

    //设置图片标签
    ui->label->setMinimumSize(40,40);
    ui->label->setScaledContents(true);
    ui->label->setStyleSheet("QLabel {background-color: transparent;}");
    ui->label->setAttribute (Qt::WA_TranslucentBackground);
//    ui->label->setPixmap(QPixmap(":/86.jfif"));
    QMovie *m = new QMovie(":/87.gif");
    ui->label->setMovie(m);
    m->start();

    ui->label_2->setMinimumSize(40,40);
    ui->label_2->setScaledContents(true);



//    ui->label_2->setPixmap(QPixmap(":/84.gif"));
    QMovie *m1 = new QMovie(":/84.gif");
    ui->label_2->setMovie(m1);
    m1->start();

    ui->label_3->hide();
   // lb->setStyleSheet("QLabel{border-image: url(:/0x300a0a0.png);}");
    ui->label_3->setStyleSheet("QLabel{background-color: transparent;}");
    ui->label_3->setAttribute (Qt::WA_TranslucentBackground);
    ui->label_3->setScaledContents(true);

    ui->label_3->setPixmap(QPixmap(":/bmw-69319.png"));

   ui->label_3->setMaximumSize(20,20);

   x_pos1 = ui->label_2->pos().x();
   y_pos = ui->label_2->pos().y();
   x_pos = x_pos1;

   xpos1 = ui->label_3->pos().x();
   ypos = ui->label_3->pos().y();
   xpos = xpos1;




    t = new QTimer;
    t1 = new QTimer;
    t2 = new QTimer;
    connect(t, SIGNAL(timeout()), this, SLOT(update_value()));
    connect(t1, SIGNAL(timeout()), this, SLOT(map_move()));
    connect(t2, SIGNAL(timeout()), this, SLOT(map_move1()));
    data = 0;
    val = 2;
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_2_clicked()));
    connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(on_pushButton_3_clicked()));
}

MainWindow::~MainWindow()
{
    delete ui;

}

void MainWindow::on_pushButton_3_clicked()
{
    //开始
    t->start(1000);
    t1->start(100);

    x_pos = x_pos1;
    xpos = xpos1;
    ui->label_2->move(x_pos,y_pos);
    ui->label_3->move(xpos,ypos);
    //去数据库中查询一条信息
    QString  str = QString("select word from word where word = 'widget' ;");
    QSqlQuery query;
    query.exec(str);
    if(query.exec())
    {
        if(query.next())
            ui->lineEdit->setText(query.value(0).toString());
    }
    qDebug() << str;
    qDebug() << query.value(0).toString();

}

void MainWindow::on_pushButton_clicked()
{
    //暂停
    t->stop();
    t1->stop();

}

void MainWindow::on_pushButton_2_clicked()
{
    //退出
    widg->show();
    delete this;
}

void MainWindow::update_value()
{

    ui->lcdNumber->display(data);
    data++ ;
    if(11 == data)
    {
        data = 0;
        t->stop();
        t1->stop();
    }

}

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    qDebug() << "键盘按下事件" << event->key();
    if(event->key() == Qt::Key_Return )
    {

        QString str1 = ui->lineEdit->text();
        QString str2 = ui->lineEdit_2->text();
        if(str1 == str2)
        {
            ui->label_3->show();
            data = 0;
            t2->start(100);
            str2 = nullptr;
            ui->lineEdit_2->setText(str2);

//            qDebug() << ui->lineEdit->text();
//            qDebug() << ui->lineEdit_2->text();
            QString  str = QString("SELECT DISTINCT * FROM WORD ;");
            QSqlQuery query;
            query.exec(str);
            if(query.exec())
            {
                int i = 0;
                while(query.next())
                {
                    qDebug() << query.value(0).toString();
                    i++;
                    if(i == val)
                    {
                        ui->lineEdit->setText(query.value(0).toString());
                        val++;
                        break;
                    }
                }
            }
        }
    }
}
void MainWindow::map_move()
{
    x_pos -= 2;
   // xpos += 3;
    ui->label_2->move(x_pos,y_pos);
    ui->label_3->move(xpos,ypos);
    if(x_pos <= xpos + 20)
    {
        ui->label_3->hide();
        x_pos = x_pos1;
        xpos = xpos1;
        t2->stop();
        ui->label_2->move(x_pos,y_pos);
        ui->label_3->move(xpos,ypos);
        widg1 = new QWidget ;
        widg1->show();
        lb1 = new QLabel("游戏结束");
        lb1->setAlignment(Qt::AlignCenter);
        QHBoxLayout *hbox1 = new QHBoxLayout;
        hbox1->addWidget(lb1);
        widg1->setLayout(hbox1);

    }
}
void MainWindow::map_move1()
{
    xpos += 3;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
天气预报是一个非常实用的个人项目,它可以帮助我们及时了解当地的天气情况,帮助我们合理安排日常生活和外出计划。 我的qt个人项目天气预报主要包括以下功能: 1. 实时天气查询:通过调用天气API,可以实时获取当地的天气信息,包括温度、湿度、风力、空气质量等指标。用户可以根据自己的需求选择查询当天或未来几天的天气情况。 2. 城市选择和管理:用户可以通过界面上的搜索功能输入城市名字查询该城市的天气情况。同时,用户还可以通过添加和删除城市的功能,方便地管理自己关注的城市列表。 3. 天气图标和背景:界面上会显示对应的天气图标,如晴天、多云、雨天等,以直观地展示当前的天气情况。同时,根据不同的天气状况,背景图片也会相应地进行变化,增加界面的美观性和可视化效果。 4. 未来天气预测:除了显示当天的天气情况外,我的个人项目还可以提供未来几天的天气预测,帮助用户更全面地了解未来几天的天气变化趋势。 通过这个个人项目,用户可以方便地获取并查看天气信息,从而更好地做出日常生活安排。此外,用户还可以根据天气预报的变化,做出适应性的衣物搭配和外出计划,提高生活效率和便利性。 总之,我的qt个人项目天气预报能够为用户提供准确、及时的天气信息,并通过直观的界面展示,帮助用户做出合理的日常生活安排和外出计划。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值