作业1
题目:
将系统给定的工程文件相关代码全部进行注释
代码:
main.cpp
#include "widget.h" // 自定义类头文件
#include <QApplication> // 应用头文件
int main(int argc, char *argv[]) // 主函数
{
QApplication a(argc, argv); // 应用实例化对象
Widget w; //实例化自定义的类
w.show(); //show方法显示界面
return a.exec(); //阻塞主函数,保持显示界面
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget> //父类头文件
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; } // 声明UI空间中的自定义类
QT_END_NAMESPACE
class Widget : public QWidget // 自定义类,继承自父类QWidget
{
Q_OBJECT // 元对象,处理信号与槽
public:
Widget(QWidget *parent = nullptr); // 构造函数
~Widget(); // 虚构函数
private:
Ui::Widget *ui; // ui指针
};
#endif // WIDGET_H
widget.cpp
#include "widget.h" // 自定义类头文件
#include "ui_widget.h" //ui头文化
Widget::Widget(QWidget *parent)
: QWidget(parent) // 调用父类有参构造初始化
, ui(new Ui::Widget) //初始化ui指针,开辟空间
{
ui->setupUi(this); // 将这个类添加到ui界面
}
Widget::~Widget() // 虚构函数
{
delete ui; // 释放ui空间
}
作业2
题目:
将登录框的两个按钮进行实现,登录按钮需要手动连接自定义的槽函数,取消按钮右键转到槽
对于登录按钮对应的槽函数中实现:
- 判断输入的账号是否等于"admin",密码是否为“123456”,如果匹配成功,则输出登录成功后关闭界面
- 如果匹配失败,输出账号和密码不匹配,请重新输入,并将密码框内容清空
- 对于取消按钮,在对应的槽函数中,关闭整个界面即可
效果:
代码:
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QIcon>
#include <QLabel>
#include <QLineEdit>
#include <QDebug>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void login_btn_clicked_listener();
void cancel_btn_clicked_listener();
private:
Ui::Widget *ui;
QLabel *logo_lab = new QLabel(this);
// 账号
QLabel *usrname_lab = new QLabel("用户名",this);
QLineEdit *usrname_edit = new QLineEdit("",this);
// 密码
QLabel *pswd_lab = new QLabel("密码",this);
QLineEdit *pswd_edit = new QLineEdit("",this);
// 登录取消
QPushButton *login_btn = new QPushButton("登录",this);
QPushButton *cancel_btn = new QPushButton("取消",this);
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 窗口
this->setWindowIcon(QIcon(":/imgs/logo.png"));
this->setWindowTitle("MyQQ");
this->setFixedSize(600,450);
// logo
logo_lab->setPixmap(QPixmap(":/imgs/bg.jpg"));
logo_lab->setFixedSize(600,200);
logo_lab->setScaledContents(true);
// 输入框图片
usrname_lab->move(120,240);
usrname_lab->setPixmap(QPixmap(":/imgs/usrname.png"));
usrname_lab->setFixedSize(30,30);
usrname_lab->setScaledContents(true);
// 输入框
usrname_edit->setPlaceholderText("用户名");
usrname_edit->resize(300,50);
usrname_edit->move(170,230);
// 密码框图片
pswd_lab->move(120,310);
pswd_lab->setPixmap(QPixmap(":/imgs/pswd.png"));
pswd_lab->setFixedSize(30,30);
pswd_lab->setScaledContents(true);
// 密码框
pswd_edit->setPlaceholderText("密码");
pswd_edit->resize(300,50);
pswd_edit->move(170,300);
// 登录按钮
login_btn->setIcon(QIcon(":/imgs/login.png"));
login_btn->resize(150,50);
login_btn->move(120,370);
// 取消按钮
cancel_btn->setIcon(QIcon(":/imgs/cancel.png"));
cancel_btn->resize(150,50);
cancel_btn->move(320,370);
/**
* 信号槽
*/
connect(this->login_btn,SIGNAL(clicked()),this,SLOT(login_btn_clicked_listener()));
connect(this->cancel_btn,SIGNAL(clicked()),this,SLOT(cancel_btn_clicked_listener()));
}
Widget::~Widget()
{
delete ui;
}
/**
* @brief 登录按钮单击槽函数
* @param 无
* @return 无
*/
void Widget::login_btn_clicked_listener(){
if (usrname_edit->text() == "admin" && pswd_edit->text() == "123456"){
login_btn->setText("登录成功");
QTimer::singleShot(1000, this, &QWidget::close);
} else {
qDebug() << "账号密码不匹配,请重新输入";
usrname_edit->clear();
pswd_edit->clear();
}
}
/**
* @brief 取消按钮单击槽函数
* @param 无
* @return 无
*/
void Widget::cancel_btn_clicked_listener(){
close();
}