c++&qt——day09

作业1

题目:

将系统给定的工程文件相关代码全部进行注释

代码:

main.cpp


#include "widget.h" // 自定义类头文件

#include  // 应用头文件


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  //父类头文件



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

题目:

将登录框的两个按钮进行实现,登录按钮需要手动连接自定义的槽函数,取消按钮右键转到槽

对于登录按钮对应的槽函数中实现:

  1. 判断输入的账号是否等于"admin",密码是否为“123456”,如果匹配成功,则输出登录成功后关闭界面
  2. 如果匹配失败,输出账号和密码不匹配,请重新输入,并将密码框内容清空
  3. 对于取消按钮,在对应的槽函数中,关闭整个界面即可

效果:

c++&qt——day09_第1张图片

代码:

widget.h


#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 

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();
}

你可能感兴趣的:(qt,c++)