一、作业要求:
1、找出槽函数调用两次的原因
在Qt中使用信号调用槽函数时,当槽函数的函数名定义格式为 “on_对象名_信号”时,则不需要在使用connect来连接信号与槽函数,系统会自动连接信号与槽函数。如果再次使用了connect来连接,则会调用两次槽函数。
2、完善登录界面,登录按钮对应的槽函数中,判断所填写账户密码是否正确,默认账户“admin”,密码“123456”,如果匹配成功,则输出登录成功并关闭界面,如果登录失败,输出登录失败,并清空密码框中的内容,点击取消按钮,则关闭界面
实现过程:
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void onclose();
void sign();
private:
QLabel *lab1; //无参构造
QLabel *lab2; //定义标签,顺便指定父组件
QLabel *lab3; //定义标签,顺便指定父组件
QLineEdit *edit1; //无参构造
QLineEdit *edit3;
QPushButton *btn; //无参构造
QPushButton *btn1; //构造按钮时,指定父组件
QMessageBox *box; //弹窗
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
源文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QDebug>
#include <QMessageBox>
//完善登录界面,登录按钮对应的槽函数中,判断所填写账户密码是否正确,默认账户“admin”,密码“123456”,
//如果匹配成功,则输出登录成功并关闭界面,如果登录失败,输出登录失败,并清空密码框中的内容,点击取消按钮,则关闭界面
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置窗口标题
this->setWindowTitle(QString("QQ")); //使用匿名对象进行传递
//设置窗口图标
this->setWindowIcon(QIcon("F:/2022_Cplus_pro/day8/01_frame/1.png"));
//设置固定尺寸
this->setFixedSize(800,600);
//定义标签Lable
lab1=new QLabel; //无参构造
lab1->setParent(this); //设置父组件
lab1->setText("账户:"); //设置文本信息
lab1->move(230,250); //移动组件位置
lab1->resize(200,40);
lab2=new QLabel(this); //定义标签,顺便指定父组件
lab2->setText("密码:"); //设置文本信息
lab2->move(230,330);
lab1->resize(200,40);
lab3=new QLabel(this); //定义标签,顺便指定父组件
lab3->resize(800,200);
lab3->setScaledContents(true);
lab3->setPixmap(QPixmap("F:/2022_Cplus_pro/day8/01_frame/2.png"));
//定义行编辑器edit
edit1=new QLineEdit; //无参构造
edit1->setParent(this); //设置父组件
edit1->move(300,250); //移动组件位置
edit1->resize(200,40);
edit3=new QLineEdit(this);
edit3->move(300,330); //移动组件位置
edit3->setEchoMode(QLineEdit::Password);
edit3->resize(200,40);
//自定义一个按钮button
btn=new QPushButton; //无参构造
btn->setParent(this); //设置父组件函数
btn->resize(80,40); //重新设置按钮框大小
btn->setText("登录"); //设置按钮上的文本信息
btn->move(400,400); //移动组件位置
//定义按钮1,顺便指定父组件
btn1=new QPushButton(this); //构造按钮时,指定父组件
btn1->setText("按钮1"); //设置按钮上的文本信息
btn1->resize(80,40); //重新设置按钮框大小
btn1->setText("取消"); //设置按钮上的文本信息
btn1->move(500,400); //移动组件位置
connect(btn1,SIGNAL(clicked()),this,SLOT(onclose())); //连接按钮btn1关闭窗口信号和槽函数
connect(btn,SIGNAL(clicked()),this,SLOT(sign())); //连接按钮btn登录信号和槽函数
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::sign() //登录槽函数
{
box=new QMessageBox; //弹窗
box->setWindowTitle("提示");
if(QString(this->edit1->text())=="admin")
if(QString(this->edit3->text())=="123456")
{
box->setText("登录成功");
box->show();
box->exec();//等待用户响应
close();
}
else if(QString(this->edit3->text())==0)
{
box->setText("请输入密码");
box->show();//展示
box->exec();//等待用户响应
}
else
{
box->setText("密码错误");
this->edit3->clear();
box->show();//展示
box->exec();//等待用户响应
}
else if(QString(this->edit1->text())==0)
{
box->setText("请输入账号");
box->show();//展示
box->exec();//等待用户响应
}
else
{
box->setText("账号错误");
box->show();//展示
box->exec();//等待用户响应
}
}
void MainWindow::onclose() //退出槽函数
{
close();
}
文章来源地址https://www.toymoban.com/news/detail-599832.html
测试文件
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
实现效果:
文章来源:https://www.toymoban.com/news/detail-599832.html
到了这里,关于QT实现窗口的账户以及密码判断登录和退出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!