#include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug> #include<QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //登录 stu = new studentt; connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::logon); connect(stu,&studentt::RturnLogon,this,[=]{ stu->hide(); this->show(); }); //注册 User_Registers = new registers; connect(ui->pushButton_2,&QPushButton::clicked,this,&MainWindow::registerss); connect(User_Registers,®isters::Show_Main,this,[=](){ this->show(); User_Registers->hide(); }); ui->lineEdit_2->setEchoMode(QLineEdit::Password); } MainWindow::~MainWindow() { delete ui; } //数据库链接 void MainWindow::opensql() { db = QSqlDatabase::addDatabase("QODBC"); db.setPort(3306); db.setDatabaseName("sql"); db.setUserName("root"); db.setPassword("123456"); db.open(); } void MainWindow::logon() { //"select * from username where username like '1122' and password like '221'" QString s = "select * from username where username like \'"+ui->lineEdit->text()+"\'"+"and password like \'"+ ui->lineEdit_2->text()+"\'"; opensql(); qDebug()<<s; //账号密码传到数据库执行 result = db.exec(s); if (result.next()) { //判断权限 n = result.value("auth").toInt(); this->hide(); stu->show(); connect(this,&MainWindow::User_Name,stu,&studentt::set_UserName); emit User_Name(ui->lineEdit->text()); } else { QMessageBox::about(this,"提示","账号或密码输入错误请重新输入"); ui->lineEdit->clear(); ui->lineEdit_2->clear(); } } void MainWindow::registerss() { User_Registers->show(); this->hide(); } 分析
时间: 2024-04-04 20:35:38 浏览: 15
这是一个 Qt 框架下的 C++ 程序,主要实现了用户登录和注册的功能。
程序中包含了一个主窗口 MainWindow 和两个子窗口 studentt 和 registers。其中,MainWindow 作为程序的主要窗口,用于用户登录和注册操作,studentt 和 registers 作为子窗口,分别用于实现已登录用户的操作和新用户的注册。
程序中使用了 Qt 的信号与槽机制来实现窗口之间的通信,例如登录操作时,点击登录按钮会触发 MainWindow 中的 logon 函数,该函数会将用户输入的账号和密码传递到数据库中进行验证,如果验证通过则将权限信息保存在变量 n 中,同时隐藏 MainWindow 窗口并显示 studentt 窗口,将用户名传递给 studentt 窗口。
程序中还包含了一些 Qt 的界面控件,例如 QLineEdit 和 QPushButton,用于实现用户输入和按钮点击等操作。
此外,程序中还包含了一个 opensql 函数,用于连接数据库。
相关问题
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QKeyEvent> #include <QPushButton> #include <QPainter> #include <QTime> #include <QDebug> //用来 Debug #include <QMessageBox>//自定义消息提示框 namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); void paintEvent(QPaintEvent *); void keyPressEvent(QKeyEvent *event); void PressUp(); void PressDown(); void PressLeft(); void PressRight(); void myRand(); QPushButton *button; int s[4][4]; int score=0; bool state; struct Ns{ int i; int j; }; public slots: void slotStart(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
这是一个Qt的头文件,用来定义MainWindow这个类。其中包含了一些Qt的类和命名空间。具体解释如下:
- #ifndef MAINWINDOW_H #define MAINWINDOW_H
这两行是用来防止头文件重复包含的宏定义,避免重复定义。如果已经定义了MAINWINDOW_H,则不会再次定义。
- #include <QMainWindow> #include <QKeyEvent> #include <QPushButton> #include <QPainter> #include <QTime> #include <QDebug> #include <QMessageBox>
这些是Qt的一些头文件,用来包含Qt的一些类和函数。例如,QMainWindow是Qt中的主窗口类,QKeyEvent用来处理键盘事件,QPushButton是按钮类,QPainter是绘图类,QTime是时间类,QDebug是用于调试的类,QMessageBox是自定义消息提示框。
- namespace Ui { class MainWindow; }
这是一个命名空间,用来定义MainWindow这个类。
- class MainWindow : public QMainWindow
这是一个类的定义,继承自QMainWindow类。在这个类中,我们可以定义变量、函数和槽函数。
- public:
这是一个访问限制符,表示接下来的成员函数和变量都是公有的,可以在其他类中访问。
- explicit MainWindow(QWidget *parent = nullptr);
这是MainWindow类的构造函数,用来初始化对象。
- ~MainWindow();
这是MainWindow类的析构函数,用来销毁对象。
- void paintEvent(QPaintEvent *);
这是一个虚函数,用来绘制窗口。
- void keyPressEvent(QKeyEvent *event);
这是一个函数,用来处理键盘按下事件。
- void PressUp(); void PressDown(); void PressLeft(); void PressRight(); void myRand();
这是一些函数,用来实现2048游戏的逻辑。PressUp函数表示向上移动方块,PressDown函数表示向下移动方块,PressLeft函数表示向左移动方块,PressRight函数表示向右移动方块,myRand函数表示生成新的方块。
- QPushButton *button;
这是一个指向QPushButton对象的指针。
- int s[4][4]; int score=0; bool state;
这是一些变量,用来存储2048游戏的状态和得分。
- struct Ns{ int i; int j; };
这是一个结构体,用来存储方块的位置。
解释下面代码 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QKeyEvent> #include <QPushButton> #include <QPainter> #include <QTime> #include <QTimer> #include <QMouseEvent> #include <QDebug> //用来 Debug #include <QMessageBox>//自定义消息提示框 #include <QSettings> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); //绘制格子 void paintEvent(QPaintEvent *); //键盘控制函数 void keyPressEvent(QKeyEvent *event); //移动函数 void PressUp(); void PressDown(); void PressLeft(); void PressRight(); //生成随机数2 void myRand(); //按钮指针 QPushButton *button_start; QPushButton *button_quit; QPushButton *button_rule; QPushButton *button_difficultysimple; QPushButton *button_difficulty; QPushButton *button_difficultyhell; QSettings settings; //定义格子 int s[4][4]; //分数 int score=0; int highScore = 0; //判断游戏的状态 bool state; struct Ns{ int i; int j; }; //槽函数——初始化 public slots: void slotStart_start(); int slotStart_simple(); int slotStart_difficulty(); int slotStart_hell(); void Message(); void closeEvent(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
这是一个 C++ 的头文件,用于定义一个名为 MainWindow 的类。该类继承自 QMainWindow 类,包含了一些成员函数和成员变量,用于实现一个简单的游戏界面和游戏逻辑。其中包括绘制游戏界面的函数 paintEvent、键盘控制函数 keyPressEvent、移动函数 PressUp、PressDown、PressLeft、PressRight、生成随机数的函数 myRand、以及一些按钮指针和一些变量用于记录分数和游戏状态等。此外,还包括了一些 Qt 库的头文件和一些用于 Debug 的库,以及一个自定义的命名空间 Ui。头文件中还包含了一些预处理指令,用于避免头文件的重复引用。具体来说,#ifndef MAINWINDOW_H、#define MAINWINDOW_H、#endif // MAINWINDOW_H 用于定义头文件的保护机制,防止头文件被重复引用。