7.26 Qt

news2024/11/28 10:49:24

用QT制作一个登陆界面

运行代码

login.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>                   //信息调试类,用于输出
#include <QIcon>                    //图标类头文件
#include <QPushButton>              //按钮类头文件
#include <QLineEdit>                //行编辑器头文件
#include <QLabel>                   //标签头文件

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    //使用无参构造标签
    QLabel *label1=new QLabel;          //背景标签
    QLabel *label2=new QLabel;          //用户文本框标签
    QLabel *label3=new QLabel;          //密码文本框标签
    QLabel *label4=new QLabel;          //超链接标签
    QLineEdit *edit1=new QLineEdit;     //用户行编辑器
    QLineEdit *edit2=new QLineEdit;     //密码行编辑器
    QPushButton *btn1=new QPushButton;  //登陆按钮
    QPushButton *btn2=new QPushButton;  //退出按钮

signals:
    void  registerSignal();   //自定义返回信号,用来发送给父窗口

public slots:
    void registerSlot();

};
#endif // WIDGET_H

register.h

#ifndef REGISTER_H
#define REGISTER_H

#include <QWidget>
#include <QDebug>                   //信息调试类,用于输出
#include <QIcon>                    //图标类头文件
#include <QPushButton>              //按钮类头文件
#include <QLineEdit>                //行编辑器头文件
#include <QLabel>                   //标签头文件

namespace Ui {
class Register;
}

class Register : public QWidget
{
    Q_OBJECT

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

    QLabel *label1=new QLabel;          //用户名标签
    QLabel *label2=new QLabel;          //密码标签
    QLabel *label3=new QLabel;          //确认密码标签
    QLabel *label4=new QLabel;          //邮箱标签
    QLineEdit *edit1=new QLineEdit;     //用户名行编辑器
    QLineEdit *edit2=new QLineEdit;     //密码行编辑器
    QLineEdit *edit3=new QLineEdit;     //确认密码行编辑器
    QLineEdit *edit4=new QLineEdit;     //邮箱行编辑器
    QPushButton *btn1=new QPushButton;  //提交按钮
    QPushButton *btn2=new QPushButton;  //刷新按钮


private:
    Ui::Register *ui;


public slots:
    void sendSignal();    //用来发送返回信号
};

#endif // REGISTER_H

main.cpp

#include "login.h"
#include "register.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Register r;  //实例化第二个界面
    //连接两个界面的信号与槽
    QObject::connect(&w,&Widget::registerSignal,&r,&Register::sendSignal);

    return a.exec();
}

login.cpp

#include "login.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //1.固定当前界面的尺寸
    this->setFixedSize(800,600);           //调用函数设置宽和高
    //2.窗口标题的设置
    this->setWindowTitle("Blog");
    //3.设置窗口图标
    this->setWindowIcon(QIcon("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\blog.jfif"));
    //4.设置背景色,可以使用qss代码完成样式表
    this->setStyleSheet("background-color:lightyellow;");
    //5.设置窗口透明度
    this->setWindowOpacity(1.0);

    //设置标签
    //利用标签设置背景
    label1->setParent(this);
    label1->resize(800,300);
    label1->setPixmap(QPixmap("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\background.jpg"));  //设置图片标签
    label1->setScaledContents(true);   //设置内容自适应

    //利用标签设置 用户和密码
    //用户文本框标签
    label2->setParent(this);
    label2->resize(40,40);
    label2->move(200,350);
    label2->setPixmap(QPixmap("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\login.png"));  //设置图片标签
    label2->setScaledContents(true);   //设置内容自适应

    //密码文本框标签
    label3->setParent(this);
    label3->resize(40,40);
    label3->move(200,450);
    label3->setPixmap(QPixmap("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\pwd.png"));  //设置图片标签
    label3->setScaledContents(true);   //设置内容自适应

    //超链接标签
    label4->setParent(this);
    label4->resize(150,40);
    label4->move(150,545);
    label4->setText("<h3><style> a{text-decoration:none;color:lightgrey;}</style><a href=\"https:www.baidu.com\">百度一下</a></h3>");  //加\"是转义  <h1></h1>可有可无
    label4->setScaledContents(true);   //设置内容自适应
    label4->setOpenExternalLinks(true);  //设置点击连接自动打开 (跳转到浏览器)

    //用户行编辑器
    edit1->setParent(this);          //设置父组件
    edit1->resize(250,40);           //重新设置尺寸
    edit1->move(270,350);            //移动位置
    edit1->setPlaceholderText("username");

    //密码行编辑器
    edit2->setParent(this);
    edit2->resize(edit1->size());
    edit2->move(270,450);
    edit2->setEchoMode(QLineEdit::Password);     //设置密文模式
    edit2->setPlaceholderText("password");      //设置占位符

    //登陆按钮
    btn1->setParent(this);   //把当前界面当成父组件
    btn1->setText("Login");  //设置按钮上的文本内容
    btn1->resize(100,50);
    btn1->move(240,530);     //移动按钮的位置
    btn1->setStyleSheet("background-color:khaki;");  //设置背景色
    btn1->setIcon(QIcon("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\login_1.png"));   //设置按钮图标
    connect(btn1, SIGNAL(clicked()), this, SLOT(registerSlot()));


    //退出按钮
    btn2->setParent(this);   //把当前界面当成父组件
    btn2->setText("Exit");  //设置按钮上的文本内容
    btn2->resize(btn1->size());
    btn2->move(480,530);     //移动按钮的位置
    btn2->setStyleSheet("background-color:khaki;");  //设置背景色
    btn2->setIcon(QIcon("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\exit.png"));   //设置按钮图标
}

Widget::~Widget()
{
}

void Widget::registerSlot()
{
    emit registerSignal();
}

register.cpp

#include "register.h"
#include "ui_register.h"

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

    //1.固定当前界面的尺寸
    this->setFixedSize(800,600);           //调用函数设置宽和高
    //2.窗口标题的设置
    this->setWindowTitle("Blog");
    //3.设置窗口图标
    this->setWindowIcon(QIcon("C:\\Users\\Administrator\\Desktop\\Insert\\QT\\icon\\blog.jfif"));
    //4.设置背景色,可以使用qss代码完成样式表
    this->setStyleSheet("background-color:lightyellow;");
    //5.设置窗口透明度
    this->setWindowOpacity(1.0);

    //用户名文本框标签
    label1->setParent(this);
    label1->resize(100,50);
    label1->move(200,100);
    label1->setText("Username");
    label1->setScaledContents(true);   //设置内容自适应

    //用户名文本框标签
    label2->setParent(this);
    label2->resize(100,50);
    label2->move(200,200);
    label2->setText("Password");
    label2->setScaledContents(true);   //设置内容自适应

    //重新确认文本框标签
    label3->setParent(this);
    label3->resize(100,50);
    label3->move(200,300);
    label3->setText("Reconfirm");
    label3->setScaledContents(true);   //设置内容自适应

    //邮箱文本框标签
    label4->setParent(this);
    label4->resize(100,50);
    label4->move(200,400);
    label4->setText("E-mail");
    label4->setScaledContents(true);   //设置内容自适应

    //用户名行编辑器
    edit1->setParent(this);          //设置父组件
    edit1->resize(250,40);           //重新设置尺寸
    edit1->move(300,100);            //移动位置
    edit1->setPlaceholderText("Username");

    //密码行编辑器
    edit2->setParent(this);          //设置父组件
    edit2->resize(250,40);           //重新设置尺寸
    edit2->move(300,200);            //移动位置
    edit2->setEchoMode(QLineEdit::Password);     //设置密文模式
    edit2->setPlaceholderText("Password");

    //用户名行编辑器
    edit3->setParent(this);          //设置父组件
    edit3->resize(250,40);           //重新设置尺寸
    edit3->move(300,300);            //移动位置
    edit3->setEchoMode(QLineEdit::Password);     //设置密文模式
    edit3->setPlaceholderText("Reenter");

    //用户名行编辑器
    edit4->setParent(this);          //设置父组件
    edit4->resize(250,40);           //重新设置尺寸
    edit4->move(300,400);            //移动位置
    edit4->setPlaceholderText("E-mail");

    //提交按钮
    btn1->setParent(this);   //把当前界面当成父组件
    btn1->setText("Submit");  //设置按钮上的文本内容
    btn1->resize(100,50);
    btn1->move(240,500);     //移动按钮的位置
    btn1->setStyleSheet("background-color:khaki;");  //设置背景色


    //刷新按钮
    btn2->setParent(this);   //把当前界面当成父组件
    btn2->setText("Restart");  //设置按钮上的文本内容
    btn2->resize(100,50);
    btn2->move(480,500);     //移动按钮的位置
    btn2->setStyleSheet("background-color:lightgrey;");  //设置背景色


}

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

void Register::sendSignal()
{
    this->show();
}

界面展示

主界面

跳转界面

思维导图

 

 

 

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

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

相关文章

更新合集 | 七月功能上新记

点击链接了解详情 七月来临&#xff0c;正式开启 2023 下半年的新征途&#xff01;这个盛夏&#xff0c;腾讯云 CODING 上线了微信扫码注册、微信通知、Go 制品管理等重点能力&#xff0c;为企业及团队研发管理带来更多便利&#xff01;以下是 CODING 新功能速递&#xff0c;快…

一文搞定IP地址

IP编址系列文章&#xff08;上&#xff09; 目录 一&#xff0c;什么是IP地址&#xff1f; 二&#xff0c;IP地址的表示方式 问题&#xff1a;计算机能识别二进制&#xff1f;十进制&#xff1f;十六进制&#xff1f; 三&#xff0c;二进制如何转换为十进制呢&#xff1f; …

如何准备远程开发环境

准备一台有root权限的服务器 创建用于开发的子用户 使用adduser命令创建新用户: sudo adduser newuser为新用户添加sudo权限,编辑sudoers文件: sudo visudo在文件中添加: newuser ALL(ALL:ALL) ALL将新用户添加到docker用户组: sudo usermod -aG docker newuser改权限 ch…

Java 聊天程序案例

单线程版本&#xff1a; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;//服务端 public class Server {public static void main(String…

HikariCP连接池

HikariCP连接池 HikariCP连接池是高性能的JDBC连接池&#xff0c;官网标注的三大特点&#xff1a;快速、简单、可靠&#xff0c;性能优于其他连接池。 官网详细地说明了HikariCP所做的一些优化&#xff0c;总结如下&#xff1a; 字节码精简&#xff1a;优化代码&#xff0c;直…

领跑人机协同时代!实在智能与EFCIO携手举办AI沙龙,推动企业数字化转型

GPT翻开了AGI&#xff08;通用人工智能&#xff09;领域的新篇章&#xff0c;也开启了各行各业的新时代。毫不夸张地说&#xff0c;进入大模型时代&#xff0c;所有的应用都值得被重写一遍。同时&#xff0c;企业也需要积极采纳新技术和创新模式&#xff0c;以应对竞争压力和不…

MURF2080CT/MURF2080CTR-ASEMI快恢复对管

编辑&#xff1a;ll MURF2080CT/MURF2080CTR-ASEMI快恢复对管 型号&#xff1a;MURF2080CT/MURF2080CTR 品牌&#xff1a;ASEMI 芯片个数&#xff1a;2 芯片尺寸&#xff1a;102MIL*2 封装&#xff1a;TO-220F 恢复时间&#xff1a;50ns 工作温度&#xff1a;-50C~150C…

代码随想录day28

46. 全排列 思路&#xff1a;这道题首先是一个排列问题&#xff0c;排列问题是讲究顺序的&#xff0c;例如[1,2]和[2,1]是两个不一样的排列&#xff0c;这里的1我们会有重复使用到&#xff0c;但是&#xff0c;在每一个排列中&#xff0c;每一个元素只能使用一次。所以需要一个…

外贸行业企业邮箱选择:安全好用的邮箱服务

随着全球化的发展&#xff0c;外贸行业在全球经济中越来越重要。作为一家从事对外贸易的企业&#xff0c;可靠、安全、易用的邮箱系统对于成功的国际交易至关重要。为您的企业选择正确的邮箱解决方案可能是一个挑战。为了使选择过程更加简化&#xff0c;我们在这里提供了一些提…

C++模板的简单练习

运行代码&#xff1a; #include"std_lib_facilities.h"template <class T>struct S { private:T val; public:S<T>() :val(T()) {}S<T>(T tt) : val(tt) {};T& get();void set(T tt) { val tt; }ostream& operator << (ostream&a…

为什么 Splashtop 是更好用的 iOS 远程桌面应用

全球远程桌面软件市场最近达到19.2亿美元&#xff0c;表明使用任意设备实现随处远程控制越来越受欢迎。 近年来&#xff0c;企业的运营方式发生了重大改变&#xff0c;远程桌面软件已成为广泛使用的解决方案。Splashtop 是目前最好用的远程桌面工具之一&#xff0c;安全可靠且…

Android安卓实战项目(2)---健身UI APP(源码在文末)

Android安卓实战项目&#xff08;2&#xff09;—健身UI APP&#xff08;源码在文末&#xff09; 一.项目运行介绍 1.大致浏览 2.功能介绍 &#xff08;1&#xff09;功能一 第一个界面点击后可以弹出图像&#xff0c;如图&#xff1a; &#xff08;2&#xff09;功能二 界…

[Spring] 三级缓存解决循环依赖详解

什么是循环依赖 注册一个bean对象的过程&#xff1a; Spring扫描class得到BeanDefinition – 根据得到的BeanDefinition去生成bean – 现根据class推断构造方法 – 根据推断出来的构造方法&#xff0c;反射&#xff0c;得到一个对象 – 填充初始对象中的属性(依赖注入) – 如果…

window的anaconda下安装opencv

window安装opencv 阿巴阿巴&#xff0c;安装了多少遍的opencv今天居然搞了这么久。整理一下笔记把。 解决思路主要来源于&#xff1a;(37条消息) 导入import cv2时出现ImportError:DLL load fail:找不到指定模块的解决办法_import cv2 importerror: dll load failed: 找不到指定…

【C进阶】指针进阶(1)_二次复习版

目录 1. 字符指针 1.1常量字符串的修改 加上const解决问题 打印常量字符串 1.2数组存放的字符串 1.3例题:数组创建与常量池的区别 2. 指针数组 2.1字符指针数组 2.2整型指针数组 2.3使用3个一维数组,模拟实现一个二维数组 2.4例题: 3.数组指针 3.1 数组指针的定义…

快速上手Webpack打包指南:用简单的步骤掌握Webpack的使用技巧

目录 概念&#xff1a;1. webpack 打包简介1.0 多个 JS 文件打包&#xff1a;1.1 webpack 数组形式1.2 webpack 对象形式 总结 Webpack的打包过程可以总结为以下几个步骤&#xff1a; 1.入口点配置&#xff1a;在Webpack的配置文件中&#xff0c;我们需要指定一个或多个入口点…

Android Studio 代码模板插件实现

Android Studio 代码模板插件 背景 可以跳过背景和简述&#xff0c;从模板插件实现开始看. 开发新页面时&#xff0c;原先需要写一堆模板代码。比如用Databinding写列表结构的页面&#xff0c;需要手写以下文件&#xff1a; XxActivity.ktXxFragment.ktXxViewModel.ktXxListA…

从零开始学习CTF

前言 CTF简介 中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式 竞赛模式 解题模式&#xff1a; 在解题模式…

如何引导客户进行自助服务,提高员工工作效率?

搭建帮助中心是大多数企业都在尝试做的事情&#xff0c;它的重要性对于企业来说不言而喻。现在对于企业来说&#xff0c;搭建帮助中心或许不是什么难事&#xff0c;但是关于帮助中心&#xff0c;有几个问题需要思考清楚&#xff0c;才能让其发挥最大的价值。 一、如何让用户养成…

Android手机app页面布局方法

app页面布局方法 1. FrameLayout&#xff08;帧布局&#xff09; (1) FrameLayout是最简单的布局了。所有放在布局里的控件&#xff0c;都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。 2. LinearLayout&#xff08;线性布局&#xff09; (1) LinearLayout按…