qt部分核心机制

news/2025/2/10 22:32:47/

作业

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_OBJECTsignals: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.ppmy.cn/news/1570979.html

相关文章

springboot整合mybatis,pageHelper,定时器,swagger

1. springboot如何整合mybatis 1.引入依赖 <!-- mybatis依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></depe…

Java集合List详解(带脑图)

允许重复元素&#xff0c;有序。常见的实现类有 ArrayList、LinkedList、Vector。 ArrayList ArrayList 是在 Java 编程中常用的集合类之一&#xff0c;它提供了便捷的数组操作&#xff0c;并在动态性、灵活性和性能方面取得了平衡。如果需要频繁在中间插入和删除元素&#xf…

linux——网络(服务器的永久不挂——守护进程)

文章目录 目录 文章目录 前言 一、前后台进程 1. 前台进程 (Foreground Process) 2. 后台进程 (Background Process) 3. 前后台进程的切换 4. 关键命令和操作 5. 注意事项 6. 信号处理 二、守护进程 1. 守护进程的核心特点 2. 常见守护进程示例 3.接口介绍 1、 fork() 2. sets…

如何解决 Linux 文件系统挂载失败的问题

当遇到Linux文件系统挂载失败的问题时&#xff0c;您可以通过以下步骤来解决问题&#xff1a; 解决方法&#xff1a; 检查挂载点&#xff1a; 确保要挂载的目标文件系统存在&#xff0c;并且挂载点是正确的。检查挂载点是否已经被其他文件系统占用。 检查文件系统状态&#x…

Spring AI -使用Spring快速开发ChatGPT应用

前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目&#xff0c;目前该项目还属于Spring实验性项目&#xff0c;但是我们可以通过该项目&#xff0c;可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…

【面试】Java高频面试题(2023最新版)

文章目录 一、java基础 1、JDK 和 JRE 有什么区别&#xff1f;2、 和 equals 的区别是什么&#xff1f;3、final 在 java 中有什么作用&#xff1f;4、java 中的 Math.round(-1.5) 等于多少&#xff1f;5、String 属于基础的数据类型吗&#xff1f;6、String str"i"…

我用Ai学Android Jetpack Compose之CircularProgressIndicator

答案来自 通义千问 Q: 我想学习CircularProgressIndicator&#xff0c;麻烦你介绍一下 当然可以&#xff01;CircularProgressIndicator 是 Jetpack Compose 中的一个组件&#xff0c;用于显示一个循环的圆形进度条。它非常适用于需要指示加载状态或进程完成度的场景。接下来…

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java&#xff0c;Scala&#xff0c;python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…