Qt 第二讲 登录框完善,登录成功后,进入新的界面;新建工程文件,默认提供的代码注释信息;前两讲思维导图

news2025/2/22 15:41:36

一,代码完善

头文件

#ifndef ZUOYE_H
#define ZUOYE_H

#include <QWidget>
#include <QDebug>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
//#include <QTextToSpeech>

QT_BEGIN_NAMESPACE
namespace Ui { class Zuoye; }
QT_END_NAMESPACE

class Zuoye : public QWidget
{
    Q_OBJECT
    QPushButton *btn_enter; //登录按钮
    QPushButton *btn_cancel; //取消按钮
    QLabel *lab_id; //账号
    QLabel *lab_pwd; //密码
    QLabel *lab_logo; //logo
    QLineEdit *edit_id;//行编辑器账号
    QLineEdit *edit_pwd;//行编辑器密码

public:
    Zuoye(QWidget *parent = nullptr);
    ~Zuoye();

    //槽函数
public slots:
    void my_cancel(); //关闭
    void my_enter();

    void my_back_slots(); //接收返回函数
signals:
    void my_jump(); //跳转信号


private:
    Ui::Zuoye *ui;
};
#endif // ZUOYE_H

源文件

#include "zuoye.h"
#include "ui_zuoye.h"

Zuoye::Zuoye(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Zuoye)
{
    ui->setupUi(this);

    //界面
    this->resize(540,420); //设置尺寸
    this->setFixedSize(540,420);//固定尺寸
    this->setStyleSheet("background-color:white;");//背景颜色
    this->setWindowOpacity(0.95);//透明度
    this->setWindowIcon(QIcon(":/icon/qq.png"));//标题栏图标
    this->setWindowTitle("马❤哥❤快❤聊");//标题栏名字


    //按钮 1-登录  2-取消 QPushbutton
    btn_enter = new QPushButton;//构造按钮
    btn_enter->setParent(this);//设置父组件
    btn_enter->setText("登录");//设置文本内容
    btn_enter->resize(75,40);//设置按钮大小
    btn_enter->setStyleSheet("background-color:skyblue;border-radius:10px");//设置样式,背景色,
    btn_enter->setIcon(QIcon(":/icon/denglu_1.png"));//设置按钮图标
    btn_enter->setEnabled(true);//设置可用状态
    btn_enter->move(170,320);//移动组件

    btn_cancel = new QPushButton;//构造按钮
    btn_cancel->setParent(this);//设置父组件
    btn_cancel->setText("取消");//设置文本内容
    btn_cancel->resize(75,40);//设置按钮大小
    btn_cancel->setStyleSheet("background-color:skyblue;border-radius:10px");//设置样式,背景色,
    btn_cancel->setIcon(QIcon(":/icon/quxiao.png"));//设置按钮图标
    btn_cancel->setEnabled(true);//设置可用状态
    btn_cancel->move(290,320);//移动组件



    //设置标签 1-账户  2-密码 3-logo  label
    lab_id = new QLabel;//构造标签
    lab_id->setParent(this);//设置父组件
    lab_id->resize(40,40);//设置尺寸
    lab_id->setPixmap(QPixmap(":/icon/denglu.png"));//设置图标
    lab_id->setScaledContents(true);//设置内容自适应
    lab_id->move(100,170);//移动

    lab_pwd = new QLabel;//构造标签
    lab_pwd->setParent(this);//设置父组件
    lab_pwd->resize(40,40);//设置尺寸
    lab_pwd->setPixmap(QPixmap(":/icon/denglumima.png"));//设置图标
    lab_pwd->setScaledContents(true);//设置内容自适应
    lab_pwd->move(100,250);//移动

    lab_logo = new QLabel;//构造标签
    lab_logo->setParent(this);//设置父组件
    lab_logo->resize(120,120);//设置尺寸
    lab_logo->setPixmap(QPixmap(":/icon/qq.png"));//设置图标
    lab_logo->setScaledContents(true);//设置内容自适应
    lab_logo->move(205,20);//移动


    //设置行编辑器 1-账号, 2-密码
    edit_id = new QLineEdit;//构造
    edit_id->setParent(this);//设置父组件
    edit_id->resize(250,50);//重新设置尺寸
    edit_id->setStyleSheet("background-color:red;");//设置颜色//
    edit_id->setPlaceholderText("QQ号码/手机/邮箱");//设置占位符
    edit_id->setEchoMode(QLineEdit::Normal);//设置密文模式
    edit_id->setStyleSheet("border:none;""border-bottom:2px solid blue;");//更改样式表
    edit_id->move(180,160);//移动

    QFont font;
    font.setPointSize(12); // 设置字体大小为12
    edit_id->setFont(font);// 将字体应用于行编辑器


    edit_pwd = new QLineEdit;//构造
    edit_pwd->setParent(this);//设置父组件
    edit_pwd->resize(250,50);//重新设置尺寸
    edit_pwd->setStyleSheet("background-color:red;");//设置颜色//
    edit_pwd->setPlaceholderText("密码");//设置占位符
    edit_pwd->setEchoMode(QLineEdit::Password);//设置密文模式
    edit_pwd->setStyleSheet("border:none;""border-bottom:2px solid blue;");//更改样式表
    edit_pwd->move(180,240);//移动

    edit_pwd->setFont(font);// 设置字体大小为12

    connect(btn_cancel, SIGNAL(clicked()), this,SLOT(my_cancel())); //取消按钮连接槽函数
    QObject::connect(btn_enter, & QPushButton::clicked, this, &Zuoye::my_enter); //登录按钮连接槽函数
}

Zuoye::~Zuoye()
{
    delete ui;
}

//取消按钮槽函数
void Zuoye::my_cancel()
{
    this->close();
}

//登录按钮槽函数
void Zuoye::my_enter()
{
    if("admin" == this->edit_id->text() && "123456" == edit_pwd->text()){
        qDebug() << "登录成功..." << endl;
        emit my_jump();
        close();
    }else{
        qDebug() << "账号密码不匹配,请重新输入..." << endl;
        this->edit_pwd->clear();
    }
}

void Zuoye::my_back_slots()
{
    this->show();
}



界面二 头文件

#ifndef JUMP_INTERFACE_H
#define JUMP_INTERFACE_H

#include <QWidget>

namespace Ui {
class jump_interface;
}

class jump_interface : public QWidget
{
    Q_OBJECT

public:
    explicit jump_interface(QWidget *parent = nullptr);
    ~jump_interface();

private slots:
    void on_back_clicked();

    //信号  返回登录界面
signals:
    void my_back();
    //槽  接收登录界面的跳转
public slots:
    void my_jump_slot();

private:
    Ui::jump_interface *ui;
};

#endif // JUMP_INTERFACE_H

源文件

#include "jump_interface.h"
#include "ui_jump_interface.h"

jump_interface::jump_interface(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::jump_interface)
{
    ui->setupUi(this);
}

jump_interface::~jump_interface()
{
    delete ui;
}



//返回按钮槽函数
void jump_interface::on_back_clicked()
{
    emit my_back();
    this->close();
}

//接收登录界面跳转 槽函数
void jump_interface::my_jump_slot()
{
    this->show();
}

运行结果

 

 二,新建一个工程文件,将默认提供的代码加上注释信息

工程管理文件

QT       += core gui
#引入Qt苏需要的类库,核心库,图形化界面库

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#超过4.0版本,加上 widgets库

CONFIG += c++11
#支持C++11以上版本

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp
#管理源文件

HEADERS += \
    widget.h
#管理头文件

FORMS += \
    widget.ui
#管理UI文件

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

头文件

#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界面对应头文件中的命名空间中的类定义的指针
                    //后期,如果想要使用ui界面中拖拽出来的组件,可以该指针找到
};                  //自己定义的组件,使用this指针找到
#endif // WIDGET_H

源文件

#include "widget.h" //自定义头文件
#include "ui_widget.h" //ui界面的头文件

//构造函数
Widget::Widget(QWidget *parent) //调用父类的有参构造
    : QWidget(parent)
    , ui(new Ui::Widget)    //构造出ui界面拖拽出来的成员,并且将地址赋值给ui指针
{
    ui->setupUi(this); //调用设置界面函数,给ui界面上的组件申请空间
}

Widget::~Widget()
{
    delete ui; //释放ui界面上的组件空间
}

主函数

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

#include <QApplication> //应用程序的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //使用应用程序类,实例化一个类对象,

    //使用自定义类实例化的对象(栈区)
    Widget w; //无参构造,实例化一个对象,改界面没有父组件,独立存在,别的组件依附于该对象
    w.show();

    return a.exec();//阻塞等待界面相关工作:用户在界面上的操作,信号与槽,事件处理
}

三,思维导图

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea23.1 翻译配置

目录 一、插件 二、配置 2.1.插件配置 2.2.阿里账号 2.2.1.账号注册 2.2.2.获取权限 2.3.idea配置 一、插件 在idea的【Settings】中&#xff0c;找到插件中心【Plugins】&#xff0c;搜索【Translation】&#xff0c;可以看到这个插件下载量最大且评分最高&#x…

【部署】让你的电脑多出一个磁盘来用!使用SSHFS将远程服务器目录挂载到Windows本地,挂载并共享服务器资源

让你的电脑多出一个磁盘来用&#xff01;---使用SSHFS将远程服务器目录挂载到Windows本地 1. 方法原理介绍2.SSHFS-Win使用教程—实现远程服务器磁盘挂载本地 由于日常主要用 Windows 系统&#xff0c;每次都得 ssh 到服务器上进行取资源&#xff08;本地磁盘不富裕&#xff09…

点赞!远眺售后团队又获客户感谢信!

杭州远眺科技有限公司成立于2013年&#xff0c;是浙江大学软件工程学科成果转化基地&#xff0c;作为国内首家为智慧应用类行业提供软件开发工具、行业应用内容和技术赋能服务的高科技公司。远眺科技始终以客户为核心&#xff0c;不断完善“产品、内容、服务”的客户赋能体系&a…

什么是事件循环Event Loop

一、含义 事件循环是指不断从任务队列中取出任务&#xff0c;并执行其对应的回调函数的过程。 二、事件循环流程 1.主线程执行同步任务&#xff0c;直到遇到异步任务时&#xff0c;将其回调函数他家到任务队列中&#xff0c;然后继续执行同步任务 2.当所有同步任务执行完之后&a…

UART中RTS和CTS流控学习总结

UART中RTS和CTS流控学习总结 目录 UART中RTS和CTS流控学习总结一、流控定义二、硬件流控过程分析 一、流控定义 流控&#xff1a;数据在两个串口之间进行通讯&#xff0c;常常会出现丢失数据的现象&#xff0c;比如当接收端数据缓冲区满了&#xff0c;而发送端还有数据发送过来…

Java读取配置文档cofing

文件结构 代码部分 import java.util.ResourceBundle;/*** Author:romulushe* Date:2022/11/9-11-09-9:18* Description:PACKAGE_NAME* version:1.0*/ public class read_config_test {public static String getConfigFileParamVal(String paramName) {ResourceBundle resourc…

商业密码应用安全性评估量化评估规则2023版更新点

《商用密码应用安全性评估量化评估规则》&#xff08;2023版&#xff09;已于2023年7月发布&#xff0c;将在8月1日正式执行。相比较2021版&#xff0c;新版本有多处内容更新&#xff0c;具体包括5处微调和5处较大更新。 微调部分&#xff08;5处&#xff09; 序号2021版本202…

重生之我要学C++第四天

这篇文章的主要内容是类的默认成员函数。如果对大家有用的话&#xff0c;希望大家三连支持&#xff0c;博主会继续努力&#xff01; 目录 一.类的默认成员函数 二.构造函数 三.析构函数 四.拷贝构造函数 五.运算符重载 一.类的默认成员函数 如果一个类中什么成员都没有&…

论述智慧消防在高层建筑信息化管理中的作用

安科瑞 华楠 【摘要】为了顺应时代的发展&#xff0c;我们做好信息化时代下的“智慧消防”工作&#xff0c;为“智慧城市”的建设奠定良好的基础。本文主要就“智慧消防”的含义、对如高层建筑等单位进行信息化“智慧消防”管理&#xff0c;当前消防管理工作中所存在的问题及如…

VUE使用docxtemplater导出word(带图片) 踩坑 表格循环空格 ,canvas.toDataURL图片失真模糊问题

参考&#xff1a;https://www.codetd.com/article/15219743 安装 // 安装 docxtemplater npm install docxtemplater pizzip --save // 安装 jszip-utils npm install jszip-utils --save // 安装 jszip npm install jszip --save // 安装 FileSaver npm install file-save…

Java集成微信公众号的事件回调, 解密的时候报错java.secwrity.InvalidKeyException: Illegal key size

java.secwrity.InvalidKeyException: Illegal key size 这是因为jar包的原因, 下载下面这个文件 https://download.csdn.net/download/dongyan3595/88103743 找到java的jre安装目录, 将jre/lib/security下的local_policy.jar、US_export_policy.jar 2个文件替换即可。

速度优化:重新认识速度优化

作者&#xff1a;helson赵子健 应用的速度优化是我们使用最频繁&#xff0c;也是应用最重要的优化之一&#xff0c;它包括启动速度优化&#xff0c;页面打开速度优化&#xff0c;功能或业务执行速度优化等等&#xff0c;能够直接提升应用的用户体验。因此&#xff0c;只要是 An…

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…

Qt Core学习日记——第三天QMetaEnum(上)

QMetaEnum用来代表枚举信息,内部也是访问moc文件。从moc文件中得到对应值 需要在头文件中声明 Q_ENUM,如下红框部分 moc中qt_meta_stringdata_XTest变为&#xff1a; qt_meta_data_XTest变为 static const uint qt_meta_data_XTest[] { // content: 8, // revision 0, // …

继承中的访问级别

值得思考的问题 子类是否可以直接访问父类的私有成员&#xff1f; 思考过程 继承中的访问级别 面向对象中的访问级别不止是 public 和 private 可以定义 protected 访问级别 关键字 protected 的意义 修饰的成员不能被外界直接访问修饰的成员可以被子类直接访问 思考 为什…

【数据库 - 用户权限管理】(简略)

目录 一、概述 二、用户权限类型 1.ALL PRIVILEGES 2.CREATE 3.DROP 4.SELECT 5.INSERT 6.UPDATE 7.DELETE 8.INDEX 9.ALTER 10.CREATE VIEW和CREATE ROUTINE 11.SHUTDOWN 12GRANT OPTION 三、语句格式 1.用户赋权 2.权限删除 3.用户删除 一、概述 数据库用…

Emacs之27.0以上共享鼠标中键复制内容(一百一十七一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

264. 丑数 II

题目描述&#xff1a; 主要思路&#xff1a; 利用动态规划的思想&#xff0c;记录2 3 5分别乘到了哪里&#xff0c;然后取最小作为新的数字。 class Solution { public:int nthUglyNumber(int n) {int dp[n1];dp[1]1;int p21,p31,p51;for(int i2;i<n;i){int num2 dp[p2]*…

【概率预测】对风力发电进行短期概率预测的分析研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、数据、详细文章 &#x1f4a5;1 概述 概率预测是一种通过概率统计方法对未来事件进行预测的技术。在风力发电的短期预测中&#xff0c;概率预测可以用来对未来风速和风…

自动生成python程序调用关系逻辑图

前言 你是否因为看一个程序或者运行一个框架&#xff0c;不知道他的运行流程&#xff1f; 自己想写一个运行流程却觉得麻烦无从下手&#xff1f; graphvizpycallgraph帮你绘制让领导看了都拍桌子称赞你的python程序逻辑调用关系图&#xff01; 先来看一下我这段时间在写的一…