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,一经查实,立即删除!

相关文章

npm 发布包、更新包,同步到 cnpm (taobao镜像)

如果还没有npm账号&#xff0c;请直接到 https://www.npmjs.com 注册。已有账号&#xff0c;根据下面的流程登录&#xff1a; 1. 登录 执行命令&#xff1a; npm login根据步骤输入你的用户名(Username)&#xff0c;密码(Password)&#xff0c;邮箱(Email)&#xff0c;邮箱接…

C# byte转bit bit组装成byte

bit组装成Byte public void BitToByte(){List<char[]> chars new List<char[]>();char mm1 1;char mm2 1;char mm3 1;char mm4 1;char mm 0;char[] chars0 new char[]{ mm1, mm2, mm3, mm4, mm, mm, mm, mm };//0-7 chars.Add(chars0);byte[] bytes new b…

深度学习推荐系统(八)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;提高开发效率。 实…

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

文章目录 前言一、代价地图自定义图层1.1 Costmap组成1.2 costmap_2d1.3 实现过程1.3.1 安装插件1.3.2 在costmap_2d中插入障碍物1.3.3 修改launch文件1.3.4 设置障碍物坐标参数二、图像编辑器2.1 安装GIMP2.1.1 命令行方式安装2.1.2 使用图形界面安装GIMP:2.2 实现过程三、ro…

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 整型变量的输入…

操作系统的运行机制

1.程序的运行原理&#xff1a; 1.CPU执行指令的过程 C语言代码在编译器上“翻译”&#xff0c;得到二进制的机器指令。一条高级语言的代码翻译过来可能会对应多条机器指令。对于CPU来说&#xff0c;机器指令才是"能看得懂"的语言。程序运行的过程其实就是CPU执行一…

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…

Verilog语法之条件编译`ifdef, `ifndef,`else, `elsif, `endif

文章目录 目录 文章目录 概要 整体架构流程 技术名词解释 技术细节 小结 概要 主要分享条件编译语句的用法 整体架构流程 C语言中的每一行代码都要参加编译。但有时候出于对程序代码优化的考虑&#xff0c;希望只对其中一部分内容进行编译&#xff0c;此时就需要在程序中加上…

Open3D(C++) 点云旋转的轴角表示法和罗德里格斯公式

目录 一、算法原理1、轴角表示法2、罗德里格斯公式二、代码实现三、结果展示四、相关链接一、算法原理 1、轴角表示法 假设刚体坐标系为B(Oxyz)绕单位向量 ω ⃗ \vec{ω}

点云从入门到精通技术详解100篇-基于 Kinect v2 相机的柑橘点云分割与配准

目录 前言 国内外研究现状 重叠果实分割国内外研究现状 点云配准国内外研究现状