(ps:本篇只完成了登录功能,其他功能,请见下篇)




登录后聊天室界面(头文件):
- #ifndef LT_JM_H
- #define LT_JM_H
-
- #include
-
- namespace Ui {
- class lt_jm;
- }
-
- class lt_jm : public QWidget
- {
- Q_OBJECT
-
-
-
- public slots:
- void jump_slot(); //接收跳转信号的槽函数
-
- public:
- explicit lt_jm(QWidget *parent = nullptr);
- ~lt_jm();
-
- private:
- Ui::lt_jm *ui;
- };
-
- #endif // LT_JM_H
注册头文件:
- #ifndef ZC_JM_H
- #define ZC_JM_H
-
- #include
- #include
- #include
-
- namespace Ui {
- class zc_jm;
- }
-
- class zc_jm : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit zc_jm(QWidget *parent = nullptr);
- ~zc_jm();
-
-
-
- public slots:
- void jump_slot(); //接收跳转信号的槽函数
-
- private slots:
- void on_pushButton_clicked();
-
- private:
- Ui::zc_jm *ui;
- };
-
- #endif // ZC_JM_H
ui界面头文件:
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include "zc_jm.h"
- #include "lt_jm.h"
- #include
- #include
//数据库管理类 - #include
//执行sql语句的类 - #include
//数据库记录的类 - #include
//消息对话框 -
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
-
-
- signals:
- void jump(); //自定义跳转信号函数
- void jump1();
-
-
- private slots:
- void on_dl_clicked();
-
- void on_zc_clicked();
-
- void on_tc_clicked();
-
- private:
- Ui::Widget *ui;
- lt_jm *jm2; //定义另一个界面的指针
- zc_jm *jm3; //定义另一个界面的指针
- QSqlDatabase db; //定义一个数据库的类对象
- };
- #endif // WIDGET_H
聊天室功能函数:
- #include "lt_jm.h"
- #include "ui_lt_jm.h"
-
- lt_jm::lt_jm(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::lt_jm)
- {
- ui->setupUi(this);
- }
-
- lt_jm::~lt_jm()
- {
- delete ui;
- }
-
- void lt_jm::jump_slot()
- {
- this->show(); //将自己界面进行展示
- }
注册功能函数:
- #include "zc_jm.h"
- #include "ui_zc_jm.h"
-
- zc_jm::zc_jm(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::zc_jm)
- {
- ui->setupUi(this);
- this->setFixedSize(500,450); //设置固定尺寸
-
-
- }
-
- zc_jm::~zc_jm()
- {
- delete ui;
- }
-
- void zc_jm::jump_slot()
- {
- this->show(); //将自己界面进行展示
- }
-
- void zc_jm::on_pushButton_clicked()
- {
- //获取ui界面中要录入的数据
- QString id = ui->lineEdit->text();
- QString pwd = ui->lineEdit_2->text();
-
- //要确保每个编辑器中都有数据
- if(id.isEmpty() || pwd.isEmpty())
- {
- QMessageBox::information(this,"提示","请将信息填写完整");
- return;
- }
-
- //准备sql语句
- QString sql = QString("insert into user_pwd(ID,password) "
- "values('%1','%2')").arg(id).arg(pwd);
- //准备语句执行者
- QSqlQuery querry;
- if(!querry.exec(sql))
- {
- QMessageBox::information(this,"失败", "添加失败");
- return;
- }else
- {
- QMessageBox::information(this,"成功", "添加成功");
- }
- }
ui界面功能函数:
- #include "widget.h"
- #include "ui_widget.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
- this->setFixedSize(500,450); //设置固定尺寸
- this->setWindowTitle("My QQ"); //设置窗口标题
- this->setWindowIcon(QIcon(":/tupian/OIP-C (1).jpg"));//设置窗口图标
- this->setStyleSheet("background-color:skyblue;"); //设置样式表
- this->setWindowOpacity(1); //设置窗口透明度
-
- ui->dl->setIcon(QIcon(":/tupian/1.jpg"));//设置按钮图标
- ui->zc->setIcon(QIcon(":/tupian/OIP-C (6).jpg"));
- ui->tc->setIcon(QIcon(":/tupian/OIP-C (5).jpg"));
- ui->dl->setStyleSheet("background-color:white; border-radius:10px;"); //设置样式表
- ui->zc->setStyleSheet("background-color:white; border-radius:10px;"); //设置样式表
- ui->tc->setStyleSheet("background-color:white; border-radius:10px;"); //设置样式表
-
- ui->pwd->setEchoMode(QLineEdit::Password); //设置回显模式
-
- ui->logo->setPixmap(QPixmap(":/tupian/OIP-C (4).jpg")); //设置图片
- ui->logo->setScaledContents(true); //设置内容自适应
- ui->yhm_t->setPixmap(QPixmap(":/tupian/OIP-C.jpg"));
- ui->yhm_t->setScaledContents(true);
- ui->pwd_t->setPixmap(QPixmap(":/tupian/OIP-C (2).jpg"));
- ui->pwd_t->setScaledContents(true);
-
- if(!db.contains("mydatabase.db"))
- {
- db = QSqlDatabase::addDatabase("QSQLITE");//添加一个数据库,调用该类中的静态成员函数addDatabase
- db.setDatabaseName("mydatabase.db");//设置数据库的名字
- }
- if(!db.open()) //打开数据库
- {
- QMessageBox::information(this,"失败","数据库打开失败");
- return;
- }
- QString sql = "create table if not exists user_pwd(" //创建表
- "ID varchar(16) primary key," //账号,主键
- "password varchar(16))"; //密码
- QSqlQuery querry; //准备语句执行者
- if(!querry.exec(sql)) //让语句执行者执行sql语句
- {
- QMessageBox::information(this, "失败", "创建表失败");
- return;
- }
-
-
-
- jm2 = new lt_jm; //给另一个界面实例化空间
- connect(this,&Widget::jump,jm2,<_jm::jump_slot);//将当前界面的信号,与s1界面的槽函数进行连接
- jm3 = new zc_jm; //给另一个界面实例化空间
- connect(this,&Widget::jump1,jm3,&zc_jm::jump_slot);//将当前界面的信号,与s1界面的槽函数进行连接
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
-
- void Widget::on_dl_clicked()
- {
- QString sql = "select * from stu_info";
- QSqlQuery querry;
- if(!querry.exec(sql))//执行sql语句
- {
- QMessageBox::information(this,"提示","显示失败");
- return;
- }
- int i = 0; //记录行数
- while(querry.next())
- {
- //在该循环中,querry对象表示的是当前的记录
- //可以使用成员函数: QSqlRecord record() const;获取当前记录
- //可以使用QSqlRecord成员函数,count():获取当前记录中的项数
- //可以使用QSqlRecord成员函数,value(index):获取当前记录中第index项的值
-
-
-
- //遍历每条记录中的每一项的内容
- for(int j=0; j
record().count(); j++) - {
- //ui->tableWidget->setItem(i,j, new QTableWidgetItem(querry.record().value(j).toString()));
- }
-
-
-
-
- i++; //继续遍历下一条记录
- }
- emit jump();
- this->hide(); //将当前界面隐藏
- }
-
- void Widget::on_zc_clicked()
- {
- emit jump1();
- this->hide(); //将当前界面隐藏
-
- }
-
- void Widget::on_tc_clicked()
- {
-
- }
- #include "widget.h"
-
- #include
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w;
- w.show();
- return a.exec();
- }