2023/9/15 -- C++/QT

作业:

1> 将工程文件进行注释

2>

03login_box.pro:

QT       += core gui
#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.0SOURCES += \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

widget.h:

#ifndef WIDGET_H
#define WIDGET_H            //防止头文件重复包含#include <QWidget>
#include <QLabel>           //标签库
#include <QPushButton>      //按钮库
#include <QLineEdit>        //文本编辑库QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }  //声明ui界面对应的命名空间
QT_END_NAMESPACEclass Widget : public QWidget       //自己的界面类,继承自QWidegt
{Q_OBJECT                    //信号与槽的元对象public:Widget(QWidget *parent = nullptr);          //声明构造函数 带有默认参数~Widget();                                  //声明析构函数private:Ui::Widget *ui;                             //私有成员,通过该指针可调用组件
};
#endif // WIDGET_H

 main.cpp:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);         //实例化一个应用程序对象Widget w;                           //无参构造实例化一个对象w.show();                           //调用成员函数return a.exec();                    //阻塞等待应用程序
}

 widget.cpp:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent)             //构造函数: QWidget(parent)                       //初始化列表,显式调用QWidget的有参构造, ui(new Ui::Widget)                    //给成员申请空间
{ui->setupUi(this);                      //给组件申请空间,并设置相关属性this->resize(800,600);                  //设置当前界面的尺寸this->setWindowTitle("Login");          //设置titlethis->setWindowIcon(QIcon("E:\\QTcreator\\projects\\QT\\day8\\03login_box\\icon\\wodepeizhenshi.png"));         //设置图标QLabel *lab1 = new QLabel(this);        //设置标签图1lab1->resize(800,300);                  //设置其大小lab1->setPixmap(QPixmap("E:\\QTcreator\\projects\\QT\\day8\\03login_box\\icon\\logo.png"));         //设置图片lab1->setScaledContents(true);          //设置填充属性QLabel *lab2 = new QLabel(this);        //设置标签图2lab2->resize(40,40);lab2->move(180,340);                    //移动标签图2lab2->setPixmap(QPixmap("E:\\QTcreator\\projects\\QT\\day8\\03login_box\\icon\\userName.jpg"));lab2->setScaledContents(true);QLabel *lab3 = new QLabel(this);        //设置标签图3lab3->resize(40,40);lab3->move(lab2->x(),lab2->y()+80);     //移动标签图3lab3->setPixmap(QPixmap("E:\\QTcreator\\projects\\QT\\day8\\03login_box\\icon\\passwd.jpg"));lab3->setScaledContents(true);QLineEdit *edit1 = new QLineEdit(this);         //设置文本编辑框1edit1->resize(400,40);edit1->move(lab2->x()+80,lab2->y());            //移动文本编辑框1QLineEdit *edit2 = new QLineEdit(this);edit2->resize(400,40);edit2->move(lab3->x()+80,lab3->y());edit2->setEchoMode(QLineEdit::Password);        //设置回显模式QPushButton *btn1 = new QPushButton(this);      //设置按钮1btn1->setIcon(QIcon("E:\\QTcreator\\projects\\QT\\day8\\03login_box\\icon\\login.png"));        //设置图标btn1->setText("Login");                         //设置文本btn1->resize(100,50);btn1->move(edit2->x()+100,edit2->y()+80);QPushButton *btn2 = new QPushButton(this);btn2->setIcon(QIcon("E:\\QTcreator\\projects\\QT\\day8\\03login_box\\icon\\cancel.png"));btn2->setText("Cancel");btn2->resize(100,50);btn2->move(btn1->x()+180,btn1->y());
}Widget::~Widget()                           //析构函数
{delete ui;
}

效果图:

 

 

 

 

一、默认工程文件中的介绍

1> 工程管理文件.pro

QT       += core gui network
#引入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 += \main.cpp \mywnd.cpp
#对头文件进行管理
HEADERS += \mywnd.h
#对ui界面文件进行管理
FORMS += \mywnd.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

2> 头文件

#ifndef MYWND_H
#define MYWND_H           //防止文件重复包含#include <QWidget>           //父类的头文件QT_BEGIN_NAMESPACE
namespace Ui { class MyWnd; }        //声明ui界面对应头文件中的命名空间
QT_END_NAMESPACE//自定义自己的界面类,公共继承自QWidget,父类中重写了绘制事件处理函数
class MyWnd : public QWidget
{Q_OBJECT              //信号与槽的元对象,没有这个对象,信号与槽就不能使用了public:MyWnd(QWidget *parent = nullptr);        //构造函数的声明,并且有一个带默认参数的形参~MyWnd();                            //析构函数的声明private:Ui::MyWnd *ui;           //可以通过该指针调用ui界面上拖拽出来的组件
};
#endif // MYWND_H

3> 源文件

#include "mywnd.h"
#include "ui_mywnd.h"//构造函数的定义
MyWnd::MyWnd(QWidget *parent): QWidget(parent)                 //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作, ui(new Ui::MyWnd)               //给自己类中的指针成员初始化空间,ui界面中拖拽出来的组件,就在这个对象中
{ui->setupUi(this);          //调用Ui::MyWnd类里面的成员函数,给拖拽的组件实例化空间,并设置相关属性
}//析构函数的定义
MyWnd::~MyWnd()
{delete ui;         //释放指针空间
}

4> 主程序文件

#include "mywnd.h"                  //引入自定义图形化界面类的头文件#include <QApplication>                //引入应用程序类的头文件int main(int argc, char *argv[])
{QApplication a(argc, argv);            //使用应用程序类,实例化一个应用程序的对象MyWnd w;              //用自定义的图形化界面类实例化一个对象w.show();            //调用show函数展示界面,父类提供的,可以展示自己的组件,以自己作为父组件的所有子组件也会被展示出来return a.exec();          //阻塞等待应用程序,防止应用程序结束,等待用户操作、等待信号与槽、等待事件发生
}

5> 各个文件之间的调用顺序

二、第一个qt界面

    qDebug() << this->size();            //获取当前界面的尺寸qDebug()<<this->width();            //获取当前组件的宽度qDebug()<<this->height();             //获取当前组件的高度this->resize(1000,800);                 //重新设置尺寸this->resize(QSize(500,400));             //使用匿名对象作为函数参数设置当前组件的尺寸this->setMaximumSize(1000,800);            //设置最大尺寸this->setMinimumSize(200,100);              //设置最小尺寸this->setFixedSize(500,400);                 //设置固定尺寸qDebug()<<this->windowTitle();             //获取当前组件的窗口标题this->setWindowTitle("My QQ");               //设置窗口标题this->setWindowIcon(QIcon("D:\\23062C++&QT\\day8\\02First\\qq.png"));     //设置窗口图标this->setStyleSheet("background-color:skyblue;");              //设置样式表this->setWindowOpacity(0.9);                              //设置窗口透明度//this->setWindowFlag(Qt::FramelessWindowHint);          //去掉窗口头部

三、常用类、组件

3.1 信息调试类(QDebug)

//    qDebug() <<"hello world";           //使用方式1:类似于cout
//    qDebug("%s", "good good study");         //使用方式2:类似于printf
//    qDebug() << QString("%1, %2, %3").arg(520).arg('H').arg("hello");   //输出合成的字符串

3.2 按钮类(QPushButton)

1> 该类提供了一个命令按钮

2> 常用函数

    //1、使用无参构造函数,构造一个按钮QPushButton *btn1 = new QPushButton;            //无参构造//btn1->show();                              //有该函数,但是没有父组件,会单独存在btn1->setParent(this);                     //将当前界面作为父组件//btn1->setText("按钮1");                      //设置按钮上的文本内容qDebug()<<btn1->size();                      //获取按钮的尺寸btn1->resize(100,30);                         //重新设置组件尺寸qDebug()<<btn1->size();btn1->setIcon(QIcon("D:\\23062C++&QT\\day8\\02First\\qq.png"));    //设置图标btn1->move(300,0);                          //移动组件位置//btn1->setStyleSheet("background-color:red; border-radius:10px;");      //设置样式表btn1->setEnabled(false);                             //设置不可用状态//2、构造一个按钮,构造时直接指定父组件QPushButton *btn2 = new QPushButton(this);btn2->setText("按钮2");btn2->resize(btn1->size());                  //使用其他组件的尺寸给该组件赋值btn2->move(btn1->x(), btn1->y()+50);          //使用其他组件的位置给该组件定位//3、构造按钮时直接给定文本内容以及父组件QPushButton *btn3 = new QPushButton("按钮3", this);btn3->resize(btn1->size());btn3->move(btn2->x(), btn2->y()+50);//4、构造按钮时直接给定图标、文本内容、父组件QPushButton *btn4 = new QPushButton(QIcon("D:\\23062C++&QT\\day8\\02First\\qq.png"), "按钮4", this);btn4->resize(btn1->size());btn4->move(btn3->x(), btn3->y()+50);

3.3 行编辑器(QLineEdit)

1> 该类提供了一个一行内的文本编辑框

2> 常用函数

    //1、构造一个行编辑器对象,并指定父组件QLineEdit *edit1 = new QLineEdit(this);edit1->resize(250,30);edit1->move(btn1->x()+120, btn1->y());edit1->setEchoMode(QLineEdit::Password);        //设置回显模式edit1->setMaxLength(6);edit1->setPlaceholderText("QQ账号/手机/邮箱");         //设置占位文本//edit1->setText("毒毒毒毒");                    //设置文本edit1->setAlignment(Qt::AlignCenter);//2、构造一个行编辑器,给定初始文本,并指定父组件QLineEdit *edit2 = new QLineEdit("嘟嘟嘟", this);edit2->move(btn2->x()+120, btn2->y());

3.4 标签类(QLabel)

1> 该类提供了用于展示文本或图片的容器

2> 常用函数

    //1、实例化一个标签,并给定初始文本内容,并指定父组件QLabel *lab1 = new QLabel("我是老六", this);lab1->resize(200,10);           //重新设置尺寸lab1->setStyleSheet("background-color:yellow;");qDebug()<<lab1->text();              //获取标签文本内容lab1->setAlignment(Qt::AlignCenter);lab1->setPixmap(QPixmap("D:\\23062C++&QT\\day8\\02First\\qq.png"));       //设置图片lab1->setScaledContents(true);                      //设置内容自适应

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

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

相关文章

深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用

深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用 1 AFM模型原理及其实现 沿着特征工程自动化的思路&#xff0c;深度学习模型从 PNN ⼀路⾛来&#xff0c;经过了Wide&#xff06;Deep、Deep&#xff06;Cross、FNN、DeepFM、NFM等模型&#xff0c;进⾏了大量的、基于不…

idea装载jerbel以及文件上传下载

一、JRebel 1.1 Jrebel介绍 JRebel是一个Java开发工具&#xff0c;它是一款用于实时代码重载的插件。它的主要功能是在不重新启动应用程序的情况下&#xff0c;将修改后的Java代码实时应用到正在运行的应用程序中&#xff0c;从而加快开发周期&#xff0c;提高开发效率。 实…

Sqlserver如何调试存储过程

前提&#xff1a;需要使用Sql Server Managerment Studio 工具进行调试。 步骤&#xff1a; 1.选择存储过程&#xff0c;右键选择“执行存储过程”。操作过后&#xff0c;会生成一个调用存储过程的代码块。 2.以编辑模式打开所以需要调试的存储过程。 3.点击调试按钮进行调…

【视觉检测】电源线圈上的导线弯直与否视觉检测系统软硬件方案

 检测内容 线圈上的导线弯直与否检测系统。  检测要求 检测线圈上的导线有无弯曲&#xff0c;弯曲度由客户自己设定。检测速度5K/8H625PCS/H。  视觉可行性分析 对样品进行了光学实验&#xff0c;并进行图像处理&#xff0c;原则上可以使用机器视觉进行测试测量…

数据结构与算法--排序算法复习

目录 1.三种常见的简单排序&#xff1a; 1.1冒泡排序 1.2 选择排序 1.3 插⼊排序 2 常见高级排序算法 2.1 希尔排序 2.2 快速排序 2.3 归并排序 2.4计数排序 先上结论&#xff1a; 1.三种常见的简单排序&#xff1a; 1.1冒泡排序 1.⾸先在未排序数组的⾸位开始&#…

Vue 3的革命性新特性:深入了解Composition API

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

安装深度(Deepin)系统

Deepin系统安装 Deepin是和Ubuntu一样&#xff0c;是一个基于Debian的Linux的发型版本。 Deepin相对于Ubuntu&#xff0c;Deepin更适合中国用户的使用习惯。 一 官网工具制作启动盘 制作启动盘、和安装系统&#xff0c;操作非常简单&#xff0c;nice&#xff01; 官网提供了…

C语言 -- 零基础入门详解

文章目录 引言1. 第一个C语言程序&#xff1a;HelloWorld1.1 编写C语言代码&#xff1a;hello.c1.2 代码分析 2. 数据类型2.1 常量与变量2.1.1 关键字2.1.2 数据类型2.1.3 常量2.1.4 变量2.1.5 使用示例 2.2 整型&#xff1a;int2.2.1 整型变量的定义和输出2.2.2 整型变量的输入…

VRTK4⭐二.VRTK4的项目基础配置

文章目录 &#x1f7e5; 硬件基本配置&#x1f7e7; 设置XR Plug-in Management&#x1f7e8; 添加项目Tilia&#x1f7e9; 配置项目Hierarchy &#x1f7e5; 硬件基本配置 解决使用OpenXR,HTC头显正常追踪,但手柄无法使用的问题. 问题如下: 当我们按照官方的标准流程配置完Op…

Apache Kafka 基于 S3 的数据导出、导入、备份、还原、迁移方案

在系统升级或迁移时&#xff0c;用户常常需要将一个 Kafka 集群中的数据导出&#xff08;备份&#xff09;&#xff0c;然后在新集群或另一个集群中再将数据导入&#xff08;还原&#xff09;。通常&#xff0c;Kafka集群间的数据复制和同步多采用 Kafka MirrorMaker&#xff0…

负载均衡-ribbon源码解析

负载均衡-ribbon源码解析 1 LoadBalanced注解 /*** 基于ribbon调用服务及负载均衡* return*/ LoadBalanced Bean public RestTemplate restTemplate(){return new RestTemplate(); }Bean ConditionalOnMissingBean public RestTemplateCustomizer restTemplateCustomizer(fin…

学习笔记|矩阵按键控制原理|数值转化为键码|密码锁|STC32G单片机视频开发教程(冲哥)|第十四集:矩阵按键原理及实践

文章目录 1.矩阵按键是什么2.矩阵按键的控制原理3.矩阵按键程序的编写将数值转化为键码完整代码&#xff1a;demo.c&#xff1a;key.c:key.h: 密码锁&#xff08;简易版&#xff09;需求分析&#xff1a; 总结课后练习&#xff1a; 1.矩阵按键是什么 这个矩阵按键也是我们这个…

Shell 正则表达式及综合案例及文本处理工具

目录 一、常规匹配 二、常用特殊字符 三、匹配手机号 四、案例之归档文件 五、案例之定时归档文件 六、Shell文本处理工具 1. cut工具 2. awk工具 一、常规匹配 一串不包含特殊字符的正则表达式匹配它自己 例子&#xff0c;比如说想要查看密码包含root字符串的&#x…

Vue3路由

文章目录 Vue3路由1. 载入vue-router 库2. 实例2.1 Vue.js vue-router 实现单页应用2.2 router-link创建链接2.3 router-view显示与url对应组件2.4 <router-link> 相关属性 Vue3路由 1. 载入vue-router 库 Vue.js 路由需要载入vue-router 库 安装直接下载地址&#xf…

Redis模块一:缓存简介

目录 缓存的定义 应用 生活案例 程序中的缓存 缓存优点 缓存的定义 缓存是⼀个高速数据交换的存储器&#xff0c;使用它可以快速的访问和操作数据。 应用 1.CPU缓存&#xff1a;CPU缓存是位于CPU和内存之间的临时存储器&#xff0c;它的容量通常远小于内存&#xff0…

linux安装常见的中间件和数据库

文章目录 一、数据库二、redis三、tomcat四、nginx五、mq六、es七、nacos八、neo4j&#xff08;图数据库&#xff09;九、fastdfs其他 一、数据库 linux环境上使用压缩包安装mysql【数据库】Mysql 创建用户与授权 二、redis redis是没有账号的&#xff0c;只能设置密码Linux…

学信息系统项目管理师第4版系列07_项目管理知识体系

1. 项目管理原则 1.1. 勤勉、尊重和关心他人 1.1.1. 关键点 1.1.1.1. 关注组织内部和外部的职责 1.1.1.2. 坚持诚信、关心、可信、合规原则 1.1.1.3. 秉持整体观 1.1.2. 职责 1.1.2.1. 诚信 1.1.2.2. 关心 1.1.2.3. 可信 1.1.2.4. 合规 1.2. 营造协作的项目管理团队…

Pytorch从零开始实战02

Pytorch从零开始实战——彩色图像识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——彩色图像识别环境准备数据集模型选择模型训练数据可视化 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytorch2.0.1cu118…

IDM(Internet Download Manager)下载器2024最新版本如何下载?

IDM&#xff08;Internet Download Manager&#xff09;下载器能够兼容支持多种浏览器进行文件下载&#xff0c;很多时候只要复制一个地址IDM的下载弹窗就自动弹出来&#xff0c;有时候不需要下载的时候也会弹&#xff0c;时间久了就会感觉很烦&#xff0c;不过这个问题其实可以…

Python stomp 发送消息无法显示文本

我们向消息服务器通过 stomp 发送的是文本消息。 当消息服务器发送成功后&#xff0c;消息服务器上的文本没有显示&#xff0c;显示的是 2 进制的数据。 如上图&#xff0c;消息没有作为文本来显示。 问题和解决 消息服务器是如何判断发送的小时是文本还是二进制的。 根据官…