QT的介绍和优点,以及使用QT初步完成一个登录界面

news2025/1/20 19:53:42

QT介绍

  • QT主要用于图形化界面的开发,QT是基于C++编写的一套界面相关的类库,进程线程库,网络编程的库,数据库操作的库,文件操作的库…
  • QT是一个跨平台的GUI图形化界面开发工具

QT的优点

  • 跨平台,具有较为完备的图形开发库,所能想到的图形的实现基本都有,比window的MFC的库更强大
  • 接口的封装性好,易上手,学习QT框架对学习计算机图形框架有很重要的参考意义
  • QT内部基本上有一套自己的简易好用的内存回收机制,对提高C++水平有帮助
  • 有很好的社区环境,市场份额在缓慢上升
  • 轻量级的开发环境,可以做嵌入式开发

练习

完成一个登录界面的界面组件设置

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton> //按钮组件头文件
#include <QLabel> //标签组件头文件
#include <QLineEdit> //行编辑器组件头文件
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //设置窗口
    this->resize(540,410); //设置窗口大小
    this->setWindowTitle("奕书聊天室");//设置窗口标题
    this->setWindowIcon(QIcon("C:\\Users\\W\\Desktop\\icon\\wodepeizhenshi.png"));
    //设置登录按钮组件
    QPushButton *btn1 = new QPushButton(QIcon("C:\\Users\\W\\Desktop\\icon\\login.png"),
                                               "登录",
                                               this);//设置按钮组件的图标,文本内容,和让其在当前界面显示
    btn1->move(240,340);  //设置按钮组件的位置
    btn1->resize(80,40);  //设置按钮组件的大小
   // btn1->setEnabled(false); //设置按钮不可点击
    //设置取消按钮组件
    QPushButton *btn2 = new QPushButton(QIcon("C:\\Users\\W\\Desktop\\icon\\cancel.png"),
                                               "取消",
                                               this);//设置按钮组件的图标,文本内容,和让其在当前界面显示
    btn2->move(340,340);
    btn2->resize(80,40);
   // btn2->setEnabled(false);
    //设置LOGO
    QLabel *lab1 = new QLabel(this);
    lab1->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\1.png"));
    lab1->resize(540,180);
    lab1->setScaledContents(true);
    //设置行编辑器 账号
    QLineEdit * edit1 = new QLineEdit(this);
    edit1->resize(220,40);
    edit1->move(180,220);
    edit1->setPlaceholderText("QQ号码/手机/邮箱");//设置占位符
    //edit1->setEchoMode(QLineEdit::Password);
    //设置行编辑器 密码
    QLineEdit * edit2 = new QLineEdit(this);
    edit2->resize(220,40);
    edit2->move(180,280);
    edit2->setPlaceholderText("密码");//设置占位符
    edit2->setEchoMode(QLineEdit::Password);//设置密文显示
    //设置账号的LOGO
    QLabel *lab2 = new QLabel(this);
    lab2->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\icon\\userName.jpg"));
    lab2->resize(50,40);
    lab2->move(edit1->x()-85,edit1->y());
    lab2->setScaledContents(true); //设置图片内容自适应
    //设置账号的LOGO
    QLabel *lab3 = new QLabel(this);
    lab3->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\icon\\passwd.jpg"));
    lab3->resize(50,40);
    lab3->move(edit2->x()-85,edit2->y());
    lab3->setScaledContents(true); //设置图片内容自适应
}
MainWindow::~MainWindow()
{
    delete ui;
}


在这里插入图片描述
对QT编写文件进行注释理解
.pro文件

QT       += core gui
#在进行编程时QT工程需要的库 core是核心库,gui是图形化界面相关的库

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下的文件)
SOURCES += \  
    main.cpp \
    mywindow.cpp

#用来管理头文件(Headers下的文件)
HEADERS += \
    mywindow.h

#用来管理ui文件(Froms下的文件)
FORMS += \
    mywindow.ui

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

.h文件

#ifndef MYWINDOW_H
#define MYWINDOW_H //防止头文件重复

#include <QWidget>  //QWidget类所在的头文件,父类头文件

QT_BEGIN_NAMESPACE
namespace Ui { class Mywindow; } //命名空间的声明
QT_END_NAMESPACE

//定义属于自己的类,Mywindow是类名,公共继承于QWidget
class Mywindow : public QWidget
{
    Q_OBJECT //信号与槽的元对象

public:
    Mywindow(QWidget *parent = nullptr); //声明构造函数,并定义一个默认参数
    ~Mywindow();  //声明析构函数

private:
    Ui::Mywindow *ui; //通过ui指针查找ui界面中的组件
};
#endif // MYWINDOW_H

mywindow.cpp文件

#include "mywindow.h"  //头文件
#include "ui_mywindow.h"  //ui界面对应的头文件

//构造函数的定义
Mywindow::Mywindow(QWidget *parent)
    : QWidget(parent)  //显性调用父类的构造函数完成子类从父类继承的成员的初始化
    , ui(new Ui::Mywindow) //对类中的指针成员开辟空间
{
    ui->setupUi(this); //为ui界面中拖拽出来的组件开辟空间
}

Mywindow::~Mywindow() //定义析构函数
{
    delete ui; //释放ui指针
}


main.cpp文件

#include "mywindow.h" //头文件

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);  //实例化一个应用程序的对象,调用有参构造
    
    Mywindow w; //在栈区实例化一个类对象
    
    w.show(); //调用show函数展示界面,是父函数提供的QWidget
    
    return a.exec();//为了阻塞界面不被关系,等待相关事情的发生
                    //等待信号与槽、事件处理、等待用户操作
}

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

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

相关文章

MySQL存储引擎MyISAM和InnoDB特点全解

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

Flutter开发- iOS 问题CocoaPods not installed or not in valid state

解决问题方案&#xff1a; 1、先检查本机CocoaPods是否安装&#xff0c;通过gem list 查看是否安装 打开终端&#xff0c;执行gem list&#xff0c;出现图中的数据即为已安装。未安装看第4 步 2、已经安装了CocoaPods&#xff0c;还出现了图中的提示&#xff0c;你可能已经猜…

快速制作餐厅签到抽奖营销活动,吸引更多顾客

在如今竞争激烈的市场中&#xff0c;吸引用户参与活动是企业获取关注和提升转化率的重要手段。而签到抽奖活动无疑是一种简单而又有效的方式。本文将教你如何利用乔拓云平台后台制作一个快速而有效的签到抽奖活动。 首先&#xff0c;登录乔拓云平台后台&#xff0c;进入【营销活…

【自学开发之旅】基于Flask的web开发(一)

web开发项目设计&#xff1a; 立项-需求分析-设计&#xff08;原型图、数据库、api设计&#xff09;-技术选型-写代码-测试-上线 web开发的本质上就是生成超文本。 前端负责展示&#xff0c;后端负责逻辑处理&#xff1a;后逻辑请求&#xff08;接收请求、响应请求&#xff0…

CSA研讨会|聚焦云原生安全,探讨技术与应用策略

为产业数字化保驾护航&#xff0c; 云原生安全体系如何有效抵御网络威胁&#xff1f; 网络安全的下一个十年&#xff0c; 云原生安全是网络安全创新之路吗&#xff1f; CNAPP部署现状&#xff0c;你了解多少&#xff1f; 9月6日&#xff08;周三&#xff09;下午14&#xff1a…

教你实现一个深浅拷贝!

浅拷贝的原理与实现 对于浅拷贝的定义我们可以初步理解为&#xff1a; 自己创建一个新的对象&#xff0c;来接受你要重新复制或引用的对象值。如果对象属性是基本的数据类型&#xff0c;复制的就是基本类型的值给新对象&#xff1b;但如果属性是引用数据类型&#xff0c;复制的…

每日一题(移除链表元素)

每日一题&#xff08;移除链表元素&#xff09; 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 思路一&#xff1a; 可以创建一个新的链表头节点newhead&#xff0c;只要是原链表中值不为val的节点、都通过尾插操作插到newhead所指向的链表中&#xff0c;原链表中…

swiper插件使用

swiper插件使用 1.进入官网 官网地址 2.下载文件保存到自己电脑上 3.解压文件夹,找到如图所示的两个文件夹,复制并引入到自己的项目中 4.使用 1.继续打开官网地址,寻找在线演示里面的轮播图案例,挑一个自己需要的,到新窗口打开 2.打开之后,右键,检查网页源代码 3.复制里面…

优秀案例 | 数字人+文化浪漫,开启城市数字文化沉浸式体验

数字人作为城市宣传的新载体、新介质&#xff0c; 可带来多元化、数字化的城市文旅发展模式&#xff0c; 通过打破虚实次元空间&#xff0c; 展现出传统文化与现代生活的相碰撞的魅力。 数字人文化浪漫 赋能城市文化新体验 南京首个以文化元宇宙主题体验中心及高校、文博…

基于JavaWeb和mysql实现网上书城前后端管理系统(源码+数据库+开题报告+论文+答辩技巧+项目功能文档说明+项目运行指导)

一、项目简介 本项目是一套基于JavaWeb和mysql实现网上书城前后端管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都…

【计算机网络】带你一文搞懂Http和Https的关系和区别!(最强详解!!)

目录 首先来讨论一下Http和Https的背景 基本概念 一、HTTP协议&#xff1a; 二、HTTPS协议&#xff1a; 区别 工作原理 HTTP工作原理 Https工作原理 HTTPS优缺点 优点&#xff1a; 缺点&#xff1a; HTTP请求消息和响应消息 响应消息 进行TLS握手时的通俗的解释&a…

智能安全帽~生命体征检测与危险气体检测一体化集成设计还是蓝牙无线外挂式方式好?

生命体征&#xff08;心率、血氧等&#xff09;检测&上报平台&#xff0c;危险气体采集&上报平台&#xff0c;是智能安全帽产品中常见的两种选配件&#xff0c;它们的实现有两种典型的模式&#xff1a; 1&#xff09;将传感器集成到主板上&#xff0c;做成一体化的智能…

RabbitMQ工作模式-工作队列

官网关于工作模式的解释地址&#xff1a;https://www.rabbitmq.com/getstarted.html Work Queue&#xff08;工作队列&#xff09; 生产者发消息&#xff0c;启动多个消费者来消费消息&#xff0c;每个消费者仅消费部分消息&#xff0c;可达到负载均衡的效果。 创建生产者 i…

java错误解决方案百科

一、业务开发缺陷 ① 工期紧、逻辑复杂&#xff0c;开发人员会更多地考虑主流程逻辑的正确实现&#xff0c;忽略非主流程逻辑&#xff0c;或保障、补偿、一致性逻辑的实现&#xff1b; ② 往往缺乏详细的设计、监控和容量规划的闭环&#xff0c;结果就是随着业务发展出现各种各…

NSS [羊城杯 2020]easyser

NSS [羊城杯 2020]easyser 开题。很容易让人觉得环境坏了。 不要慌&#xff0c;无从下手时。看源码、扫目录、抓包。一套操作下来&#xff0c;发现几个可以下手的路由。 /index.php /robots.txt 访问 /star1.php&#xff0c;一说到百度&#xff0c;就猜测是否存在SSRF。 源码中…

【LeetCode-面试经典150题-day18】

目录 17.电话号码的字母组合 77.组合 46.全排列 52.N皇后Ⅱ 17.电话号码的字母组合 题意&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xf…

Python(Web时代)—— Django数据库(多表)

两表联查 常见的两表关系&#xff1a; 一对多&#xff1a;ForeignKey 举例&#xff1a;一个学生对应多个地址 一般通过外键实现 需要在“多”的那个模型中使用ForeignKey 使用on_delete指定级联删除策略&#xff1a; CASCADE&#xff1a;当父表数据删除时&#xff0c;相对…

xml和json互转工具类

分享一个json与xml互转的工具类&#xff0c;非常好用 一、maven依赖 <!-->json 和 xm 互转</!--><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency&g…

网工内推 | 技术支持工程师,最高40k,CCNP、CISP认证优先

01 卓望公司 招聘岗位&#xff1a;高级技术支持工程师 职责描述&#xff1a; 1、负责网络安全防护类产品技术支持工作&#xff0c;包括但不限于&#xff1a;抗DDoS&#xff0c;云WAF&#xff0c;漏洞扫描等。 2、负责网络安全防护类产品安装、配置、升级和系统加固等维护支撑工…