自学内容网 自学内容网

汽车管理系统——登录界面

如何实现登录?

密码的验证
获取控件中密码,与数据库中密码比对,如果成功就跳转到下一个界面,不成功就告知密码错误
用一个信号槽,
QSqlquery query
query.exec(Qstring(“select password from table”))
while(query.next()){
if(query.value[0]==ui->lineedit->currenttext()->toint)
{
showwidget()
}
}

登录成功如何显示下一个界面?

Widget w;
    LoginDialog dlg;
    if(dlg.exec()==QDialog::Accepted){
        w.show();
        return a.exec();
    }else{
        return 0;
    }

在main中声明两个窗口对象,使用.exec运行登录界面,结果如果返回ACCEPTED,那就.show()显示窗口
dlg.exec() == QDialog::Accepted 是 Qt 中用于判断对话框执行后是否返回了“接受”状态的一种常见方法。它通常在模式对话框的上下文中使用,通过 exec() 方法运行对话框,并根据对话框返回的结果执行不同的操作。

return a.exec()这边的a是什么对象

在这段代码中,a 是一个 QApplication 对象:

QApplication a(argc, argv);

解释:

  • QApplication a(argc, argv); 创建了一个 QApplication 对象 a,这是任何 Qt GUI 应用程序的核心对象,它负责管理应用程序的控制流和主要设置。argcargv 是从命令行传递过来的参数,它们会传递给 QApplication 构造函数,以便应用程序可以处理命令行参数。

  • return a.exec(); 表示进入应用程序的事件循环exec() 会启动事件循环,确保应用程序在执行期间能够处理用户输入(如鼠标和键盘事件)、窗口管理事件、以及其他来自操作系统的事件。它阻塞程序的主线程,直到应用程序退出。

代码逻辑:

  1. 创建 QApplication 对象 a 来管理应用程序。
  2. 如果 createConnection()createXml() 失败,则直接退出程序,返回 0
  3. 创建主窗口 Widget w 和登录对话框 LoginDialog dlg
  4. 调用 dlg.exec(),以模态方式显示登录对话框,等待用户操作。如果用户点击了“确定”(QDialog::Accepted),程序显示主窗口 w 并进入事件循环 (a.exec()),保持程序运行。
  5. 如果用户取消了登录操作(QDialog::Rejected),程序返回 0 并退出。

事件循环的作用:
a.exec() 启动后,程序会进入事件循环,应用程序将保持运行并响应各种事件(如鼠标点击、键盘输入等)。当主窗口被关闭或 QApplication::quit() 被调用时,exec() 会返回,并且程序将退出事件循环,结束应用程序的生命周期。

总结:

  • aQApplication 对象,管理 Qt GUI 应用程序的生命周期。
  • a.exec() 启动事件循环,确保程序能够持续运行,直到用户关闭窗口或调用退出操作。
 //创建密码表
query.exec("create table password(pwd varchar primary key)");
query.exec("insert into password values('123456')");

如何创建数据库中的密码表?

create table password(pwd varchar primary key)
varchar是可变长度
然后插入一个密码

在这里插入图片描述

为什么这边添加QT设计师界面类,不是头文件源文件

在这里插入图片描述
QT设计师界面类会自动创建头文件、CPP和UI文件

在这里插入图片描述
然后添加控件元素
在这里插入图片描述

setFixedSize(400,300);
setWindowTitle(tr("登录"));
ui->pwdLineEdit->setFocus();
ui->loginBtn->setDefault(true);

setFixedSize(400,300);: 将窗口的大小固定为400x300像素,禁止用户调整窗口的大小。
setWindowTitle(tr(“登录”));: 设置窗口的标题为“登录”,并使用 tr() 函数来确保该字符串可以被翻译(在多语言应用中使用)。
ui->pwdLineEdit->setFocus();: 设置密码输入框 (pwdLineEdit) 在窗口打开时自动获得焦点,这样用户可以立即输入密码。
ui->loginBtn->setDefault(true);: 将登录按钮 (loginBtn) 设置为默认按钮,用户按回车键时会自动触发该按钮的点击事件。

如何获取文本框内的信息

->text()

密码不一定是整型,需要用字符串,所以要把密码表中转为字符串

query.value(0).toString()

密码输入错误之后怎么处理?

先告知用户
清空之前的输入,然后重新提交

如何弹出消息

QMessageBox::warning(this,tr("密码错误"),tr("请输入正确的密码再登录!"),QMessageBox::Ok);

QMessageBox::Ok这个是怎么用?

QMessageBox::Ok 是 Qt 框架中的一个标准按钮枚举,通常用于对话框中表示“确定”按钮。它常与 QMessageBox 类配合使用,用于创建消息框并显示给用户,等待用户进行交互(如点击“确定”按钮)。

 ui->pwdLineEdit->clear();
ui->pwdLineEdit->setFocus();

清除之前的输入,重新输入

取消按钮应该怎么使用?

QDialog::reject();

QDialog::reject() 是 Qt 中 QDialog 类的一个方法,通常用于关闭对话框,并返回一个“拒绝”状态(一般表示用户取消了操作或不想继续)。与 QDialog::accept() 相对,reject() 用于处理用户关闭对话框时的取消操作。
在这里插入图片描述
就是退出按钮,点击直接关闭对话框


原文地址:https://blog.csdn.net/qq_43920838/article/details/143025166

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!