当前位置: 首页 > article >正文

qt部分核心机制

作业

1> 手动将登录项目实现,不要使用拖拽编程

并且,当点击登录按钮时,后台会判断账号和密码是否相等,如果相等给出登录成功的提示,并且关闭当前界面,发射一个跳转信号,如果登录失败,则给出登录失败的提示,并清空密码框

当点击取消按钮时,直接关闭当前登录框

.h文件

#ifndef MYJOB_H
#define MYJOB_H

#include <QMainWindow>
#include <QPushButton>
#include <QLabel>
#include <QWidget>
#include<QLineEdit>
#include <QObject>
#include <QMessageBox>
class myjob : public QMainWindow
{
    Q_OBJECT

signals:
    void my_signal();       //定义一个信号函数
public slots:
    void  btn1_yes_slot();      //自定义槽函数
    void  btn2_no_slot();
private slots:
    void  showMessage()
    {
        QMessageBox::information(this,"Information","登录失败!");
    }
public:
    myjob(QWidget *parent = nullptr);
    ~myjob();
private:
    QLabel *btn1_Account_label;
    QLabel *btnlogo_Icon_label;
    QLabel *btn2_Cryptographic_tag_label;
    QLineEdit *btn1_Account_entry;
    QLineEdit *btn2_Password_input;
    QPushButton *btn1_yes;
    QPushButton *btn2_no;
};
#endif // MYJOB_H

 源码文件

#include "myjob.h"

myjob::myjob(QWidget *parent)
    : QMainWindow(parent)
{
    //主页面设置
    this->setFixedSize(400,600);      //主页面大小


    //logo图标(也是标签)
    this->btnlogo_Icon_label = new QLabel;
    btnlogo_Icon_label->setParent(this);    //设置父组件
    btnlogo_Icon_label->resize(400,150);      //设置标签宽高
    btnlogo_Icon_label->move(0,0);      //移动标签位置
    btnlogo_Icon_label->setText("霜雪阅读");     //设置文本
    btnlogo_Icon_label->setStyleSheet("background-color:green;");     //设置背景颜色,否则看不见
    btnlogo_Icon_label->setAlignment(Qt::AlignCenter);        //设置对齐方式

    //账户标签
    btn1_Account_label = new QLabel;        //无参构造
    btn1_Account_label->setParent(this);    //设置父组件
    btn1_Account_label->resize(50,20);      //设置标签宽高
    btn1_Account_label->move(50,200);      //移动标签位置
    btn1_Account_label->setText("账户");     //设置文本
    btn1_Account_label->setStyleSheet("background-color:red;");     //设置背景颜色,否则看不见
    btn1_Account_label->setAlignment(Qt::AlignCenter);        //设置对齐方式

    //账户输入
    btn1_Account_entry = new QLineEdit(this);     //有参构造并设置父组件
    btn1_Account_entry->resize(150,20);         //设置宽和高
    btn1_Account_entry->move(btn1_Account_label->x()+btn1_Account_label->width()+10, btn1_Account_label->y());
    //btn1_Account_entry->setStyleSheet("background-color:pick;");     //设置背景颜色,否则看不见
    btn1_Account_entry->setAlignment(Qt::AlignCenter);        //设置对齐方式
    btn1_Account_entry->setPlaceholderText("请输入账号");      //设置占位文本

    //密码标签
    btn2_Cryptographic_tag_label = new QLabel;
    btn2_Cryptographic_tag_label->setParent(this);    //设置父组件
    btn2_Cryptographic_tag_label->resize(50,20);      //设置标签宽高
    btn2_Cryptographic_tag_label->move(btn1_Account_label->x(),btn1_Account_label->y()+btn1_Account_label->height()+15);      //移动标签位置
    btn2_Cryptographic_tag_label->setText("密码");     //设置文本
    btn2_Cryptographic_tag_label->setStyleSheet("background-color:red;");     //设置背景颜色,否则看不见
    btn2_Cryptographic_tag_label->setAlignment(Qt::AlignCenter);        //设置对齐方式

    //密码输入
    btn2_Password_input = new QLineEdit(this);     //有参构造并设置父组件
    btn2_Password_input->resize(150,20);         //设置宽和高
    btn2_Password_input->move(btn2_Cryptographic_tag_label->x()+btn2_Cryptographic_tag_label->width()+10, btn2_Cryptographic_tag_label->y());
    //btn2_Password_input->setStyleSheet("background-color:pick;");     //设置背景颜色,否则看不见
    btn2_Password_input->setAlignment(Qt::AlignCenter);        //设置对齐方式
    btn2_Password_input->setPlaceholderText("请输入密码");      //设置占位文本
    btn2_Password_input->setEchoMode(QLineEdit::Password);      //设置密文

    //登录按钮
    btn1_yes = new QPushButton("确认",this);  //有参构造并设置父组件及填充文本
    btn1_yes->resize(50,35);        //设置按键的宽和高
    btn1_yes->move(btn2_Cryptographic_tag_label->x()+btn2_Cryptographic_tag_label->x(),
                   btn2_Cryptographic_tag_label->y()+200);
    
 


    //取消按钮
    btn2_no = new QPushButton("取消",this);  //有参构造并设置父组件及填充文本
    btn2_no->resize(50,35);        //设置按键的宽和高
    btn2_no->move(btn1_yes->x()+100,
                   btn1_yes->y());
    //连接登录按钮
    QObject::connect(this->btn1_yes,&QPushButton::clicked(,this,&Mainlogin::btn1_yes_slot));
    
    //连接取消按钮
}

myjob::~myjob()
{
}

 测试文件

#include "myjob.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    myjob w;
    w.show();
    return a.exec();
}

2> 思维导图

3>两篇刷题28/30 

 


http://www.kler.cn/a/537013.html

相关文章:

  • Python调取本地MongoDB招投标数据库,并结合Ollama部署的DeepSeek-R1-8B模型来制作招投标垂直领域模型
  • 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信
  • Excel 融合 deepseek
  • ARM嵌入式学习--第十三天(I2C)
  • kafka消费端之消费者协调器和组协调器
  • git SourceTree 使用
  • C#中的Dump:解锁程序调试新姿势
  • DeepSeek vs. ChatGPT:不同的诞生时间,对人工智能发展的不同影响
  • LabVIEW铅酸蓄电池测试系统
  • docker多个容器的相互通信
  • php7.3安装php7.3-gmp扩展踩坑总结
  • 2021 年 9 月青少年软编等考 C 语言五级真题解析
  • 自动生成ppt
  • C++ 编译 g++ -> make -> cmake
  • idea 找不到或者无法加载主类
  • 线性代数于工程应用中的实践:以代码实例拆解图像平滑问题的求解逻辑
  • Retrieval-Augmented Generation,检索增强生成流程
  • HTML01-知云接力
  • 【C语言】C语言经典面试题详解
  • 传华为2025年新品更新 用上超声波指纹nova上红枫
  • 大模型做导师之方案版本比较
  • Unity Shader Graph 2D - 使用DeepSeek协助绘制一个爱心
  • Spring Boot启动内嵌tocmat原理
  • mysql的原理及经验
  • Vue3+codemirror6实现公式(规则)编辑器
  • 记录一次mysql主从