初探---Qt

目录

一、介绍Qt

二、软件安装 

三、QT工具介绍 

四、Assistant帮助文档的使用 

 五、设计师界面的介绍

​编辑 六、QT工程项目各文件初始程序的介绍

1> 配置文件:.pro文件

2> 头文件

3> 源文件

4> 主程序

5> 各文件之间调用方式

七、第一个QT界面 

1> 创建自定义类时需要指定父类

2> 第一个界面的相关操作 

设计一个界面如下图

​编辑 widget.h文件

main.cpp文件

widget.cpp文件

 常用类与组件

一、介绍Qt

1. QT主要用于图形化界面的开发, QT是基于C++编写的一套界面相关的类库,

        进程线程库,网络编程的库,数据库操作的库,文件操作的库..... ​

2. 学习QT,

        掌握QT中的类库是做什么,如何使用这个类库

        类库实例化对象(构造函数) --> 学习类库中方法(函数)的使用 --> 后台逻辑的实现 ​

3. QT是一个跨平台的GUI图形化界面开发工具

4. QT的使用场合

        汽车仪表盘

        打印机

        医疗器械

        自动化的大型设备

5. QT的优点

        1.跨平台,具有较为完备的图形开发库,你所能想到的的图形的实现基本都有,比window的MFC的库更强大。所以很多之前做桌面开发用MFC的都转了Qt。

        2.接口的封装性好,易上手,学习QT框架对学习计算机图形框架有很重要的参考意义。

        3.Qt内部基本上有一套自己的简易好用的内存回收机制,对提高C++水平有帮助。

        4.有很好的社区环境,市场份额在缓慢上升。

        5.轻量级的开发环境,可以做嵌入式开发

二、软件安装 

https://download.qt.io/archive/online_installers/4.2/

Windows : qt-unified-windows-x86-4.2.0-beta-online.exe

linux : qt-unified-windows-x86-4.2.0-beta-online.run

MAC : qt-unified-windows-x86-4.2.0-beta-online.dmg 

三、QT工具介绍 

1. Assistant      --->      QT类库的帮助手册的工具 ​

2. Designer       --->     用来设计图形化界面 对应的界面

        文件为***.ui (ui文件中的内容是一种标记性的语言) ​

3. uic.exe ---> 将***.ui文件转换为标准的C++的代码 ui_***.h         C:\Qt\5.15.2\mingw81_64\bin\uic.exe

        在cmd终端下输入以下命令:

        C:\Qt\5.15.2\mingw81_64\bin\uic.exe designer.ui -o ui_designer.h ​

4. moc.exe ---> 元对象编辑器工具

        C:\Qt\5.15.2\mingw81_64\bin\moc.exe

        将QT中非标准的信号和槽,转换为标准的C++的代码 ​

5. rcc.exe ---> 资源管理器

        C:\Qt\5.15.2\mingw81_64\bin\rcc.exe

        将QT资源文件(图片,音频文件,视频文件),转换为标准的C++代码 ​

6. qmake ---> 工程管理的工具

        QT工程文件的后缀为***.pro工程文件,

        qmake工具可以根据***.pro文件,生成Makefile文件,

        通过Makefile文件编译C++的代码。 ​

7. QTcreater --> QT集成开发环境工具(IDE)

        将上边的所有的工具都集成到一起了。

四、Assistant帮助文档的使用 

1> qt中的类名就是头文件的名字

2> 有些类需要在.pro文件中引入对应的类库后,才能引入头文件,进而对类的使用

3> qt中的类,大部分都是多级继承关系

        QLineEdit --> QWidget --> QObject and QPaintDevice

        QPushButton --> QAbstractButton --> QWidget --> QObject and QPaintDevice

        QLabel --> QFrame --> QWidget --> QObject and QPaintDevice

 五、设计师界面的介绍

 六、QT工程项目各文件初始程序的介绍

1> 配置文件:.pro文件

QT       += core gui sql network
# QT工程所需的类库 core是核心库  gui图形化界面相关类库greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#版本超过4.0,会加上widgetsCONFIG += 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>        //QWidget类所在的头文件,父类头文件QT_BEGIN_NAMESPACE
namespace Ui { class MyWnd; }          //命名空间的声明
QT_END_NAMESPACE//定义属于自己的类  MyWnd是类名,公共继承自QWidget
class MyWnd : public QWidget
{Q_OBJECT        //信号与槽的元对象public:MyWnd(QWidget *parent = nullptr);         //构造函数的声明,有一个默认参数的形参~MyWnd();                           //析构函数额声明private:Ui::MyWnd *ui;             //后期可以通过ui指针找到ui界面上拖拽出来的组件
};
#endif // MYWND_H

3> 源文件

#include "mywnd.h"              //自己的头文件
#include "ui_mywnd.h"          //ui界面对应的头文件MyWnd::MyWnd(QWidget *parent)            //构造函数的定义: QWidget(parent)                  //显性调用父类的构造函数完成对子类从父类继承下来成员的初始化工作, ui(new Ui::MyWnd)                //对自己类中的指针成员开辟空间
{ui->setupUi(this);         //给拖拽出来的组件实例化空间}MyWnd::~MyWnd()            //析构函数的定义
{delete ui;             //释放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界面 

1> 创建自定义类时需要指定父类

2> 第一个界面的相关操作 

  this->resize(QSize(800,600));       //使用匿名对象,调用重新设置尺寸函数qDebug() << "size = " << this->size();qDebug()<<"width = "<<this->width();        //输出组件宽度qDebug()<<"height = "<<this->height();      //获取高度//2、设置尺寸最值this->setMaximumSize(1000,800);       //设置最大尺寸this->setMinimumSize(400,300);         //设置最小尺寸this->setFixedSize(540, 410);          //设置固定尺寸//3、窗口标题qDebug()<<this->windowTitle();this->setWindowTitle("My First Window");qDebug()<<this->windowTitle();//4、设置窗口的iconthis->setWindowIcon(QIcon("C:\\Users\\xxxxx\\xxx.png"));//5、设置背景色,一般使用样式表完成this->setStyleSheet("background-color:skyblue;");//6、设置窗口透明度this->setWindowOpacity(0.8);//8、设置纯净窗口this->setWindowFlag(Qt::FramelessWindowHint);//9、移动窗口位置this->move(50,100);

设计一个界面如下图

 widget.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPushButton>
#include <QDebug>
#include <QIcon>
#include <QLabel>
#include <QPixmap>
#include <QLineEdit>
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
};
#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"Widget::Widget(QWidget *parent): QWidget(parent)
{this->setFixedSize(900, 800);          //设置固定尺寸//3、窗口标题this->setWindowTitle("My First Window");//4、设置窗口的iconthis->setWindowIcon(QIcon("C:\\Users\\29154\\Desktop\\23HQYJ\\C++\\Qt_project\\my_first_window\\icon\\wodepeizhenshi.png"));//5、设置背景色,一般使用样式表完成this->setStyleSheet("background-color:rgb(226,227,228);");//标签QLabel *lab1 = new QLabel(this);lab1->setGeometry(0, 0, 900, 458);lab1->setPixmap(QPixmap("C:\\Users\\29154\\Desktop\\23HQYJ\\C++\\Qt_project\\my_first_window\\icon\\logo1.png"));lab1->setScaledContents(true);QLabel *lab2 = new QLabel(this);lab2->setGeometry(270, 500, 40, 40);lab2->setPixmap(QPixmap("C:\\Users\\29154\\Desktop\\23HQYJ\\C++\\Qt_project\\my_first_window\\icon\\userName.jpg"));lab2->setScaledContents(true);QLabel *lab3 = new QLabel(this);lab3->setGeometry(270, 580, 40, 40);lab3->setPixmap(QPixmap("C:\\Users\\29154\\Desktop\\23HQYJ\\C++\\Qt_project\\my_first_window\\icon\\passwd.jpg"));lab3->setScaledContents(true);//行编辑器//1、构造一个行编辑器,构造时给定父组件QLineEdit *edit1 = new QLineEdit(this);QLineEdit *edit2 = new QLineEdit(this);edit1->setPlaceholderText("QQ/手机/邮箱");        //设置编辑器的占位文本edit2->setPlaceholderText("密码");edit1->resize(200,40);            //设置尺寸edit2->resize(200,40);edit1->move(350,500);       //移动位置edit2->move(350,580);edit2->setEchoMode(QLineEdit::Password); //设置回显模式//按钮组件QPushButton *btn1 = new QPushButton("登录", this);QPushButton *btn2 = new QPushButton("取消", this);btn1->resize(110,60);btn1->move(320,650);btn2->resize(110,60);btn2->move(450,650);btn1->setIcon(QIcon("C:\\Users\\29154\\Desktop\\23HQYJ\\C++\\Qt_project\\my_first_window\\icon\\login.png"));btn2->setIcon(QIcon("C:\\Users\\29154\\Desktop\\23HQYJ\\C++\\Qt_project\\my_first_window\\icon\\cancel.png"));
}Widget::~Widget()
{
}

 常用类与组件

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

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

相关文章

24V输入防反接电路

#24V输入防反接电路 &#xff08;部分图片参考东沃电子&#xff09; 用于对输入的24V电源进行防反接及ESD保护&#xff0c;可用于EMC测试实验的电源输入保护&#xff0c;额定电流3A&#xff0c;后级电路最大损坏电压为48V。 1.24V输入防反接原理图 如上图所示&#xff0c;24V_…

Android RecyclerView 之 列表宫格布局的切换

前言 RecyclerView 的使用我就不再多说&#xff0c;接下来的几篇文章主要说一下 RecyclerView 的实用小功能&#xff0c;包括 列表宫格的切换&#xff0c;吸顶效果&#xff0c;多布局效果等&#xff0c;今天这篇文章就来实现一下列表宫格的切换&#xff0c;效果如下 一、数据来…

C++八股记录

C内存管理 C中&#xff0c;内存分成5个区。 栈&#xff1a;函数内局部变量&#xff1b;自动管理&#xff0c;效率高&#xff0c;但空间较小&#xff1b; 堆&#xff1a;new分配的内存块&#xff1b;手动管理&#xff0c;效率低&#xff0c;但空间大&#xff1b; 自由存储区&…

【数据结构与算法 模版】高频题刷题模版

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【】&#xff0c;使用【】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&#xff1a;目标公…

实现带头双向循环链表

&#x1f308;带头双向循环链表 描述&#xff1a;一个节点内包含两个指针&#xff0c;一个指向上一个节点&#xff0c;另一个指向下一个节点。哨兵位指向的下一个节点为头节点&#xff0c;哨兵位的上一个指向尾节点。 结构优势&#xff1a;高效率找尾节点&#xff1b;高效率插入…

设计模式——装饰器模式

装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种类型的设计模式属于结构型模式&#xff0c;它是作为现有的类的一个包装。 装饰器模式通过将对象包装在装饰器类中&#xff0c;以便动态…

04架构管理之分支管理实践-一种git分支管理最佳实践

专栏说明&#xff1a;针对于企业的架构管理岗位&#xff0c;分享架构管理岗位的职责&#xff0c;工作内容&#xff0c;指导架构师如何完成架构管理工作&#xff0c;完成架构师到架构管理者的转变。计划以10篇博客阐述清楚架构管理工作&#xff0c;专栏名称&#xff1a;架构管理…

【数据结构】二叉数的存储与基本操作的实现

文章目录 &#x1f340;二叉树的存储&#x1f333;二叉树的基本操作&#x1f431;‍&#x1f464;二叉树的创建&#x1f431;‍&#x1f453;二叉树的遍历&#x1f3a1;前中后序遍历&#x1f4cc;前序遍历&#x1f4cc;中序遍历&#x1f4cc;后续遍历 &#x1f6eb;层序遍历&am…

Vue2向Vue3过度核心技术插槽

目录 1 插槽-默认插槽1.作用2.需求3.问题4.插槽的基本语法5.代码示例6.总结 2 插槽-后备内容&#xff08;默认值&#xff09;1.问题2.插槽的后备内容3.语法4.效果5.代码示例 3 插槽-具名插槽1.需求2.具名插槽语法3.v-slot的简写4.总结 4 作用域插槽1.插槽分类2.作用3.场景4.使用…

C#,《小白学程序》第六课:队列(Queue)的应用,《实时叫号系统》

医院里面常见的叫号系统怎么实现的&#xff1f; 1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序》第…

ChromeOS 的 Linux 操作系统和 Chrome 浏览器分离

导读科技媒体 Ars Technica 报道称&#xff0c;谷歌正在将 ChromeOS 的浏览器从操作系统中分离出来 —— 让它变得更像 Linux。虽然目前还没有任何官方消息&#xff0c;但这项变化可能会在本月的版本更新中推出。 据介绍&#xff0c;谷歌将该项目命名为 "Lacros"——…

监控抽烟检测识别算法

监控抽烟检测识别算法采用yolov7系列网络模型深度学习图像识别技术&#xff0c;监控抽烟检测识别算法能够准确识别人员抽烟的动作和烟雾&#xff0c;监控抽烟检测识别算法一旦发现有人员在禁烟区域内抽烟&#xff0c;将立即触发预警。YOLO的结构非常简单&#xff0c;就是单纯的…

遇到 Binder这些面试题,你会怎么答?

作为开发人员&#xff0c;每个人都有每个人擅长领域&#xff0c;自然也有自己不擅长的领域&#xff0c;很难成为完美的一个全栈开发。在面试中最怕遇见的一件事是面试官专挑你不擅长的领域进行提问&#xff0c;目的就是看你遇到问题的应变能力。 接下给大家分享一个面试中容易被…

Linux系统编程:线程控制

目录 一. 线程的创建 1.1 pthread_create函数 1.2 线程id的本质 二. 多线程中的异常和程序替换 2.1 多线程程序异常 2.2 多线程中的程序替换 三. 线程等待 四. 线程的终止和分离 4.1 线程函数return 4.2 线程取消 pthread_cancel 4.3 线程退出 pthread_exit 4.4 线程…

QML Book 学习基础3(动画)

目录 主要动画元素 例子&#xff1a; 非线性动画 分组动画 Qt 动画是一种在 Qt 框架下创建交互式和引人入胜的图形用户界面的方法&#xff0c;我们可以认为是对某个基础元素的多个设置 主要动画元素 PropertyAnimation-属性值变化时的动画 NumberA…

【操作系统】聊聊局部性原理是如何提升性能的

对于目前数据主导的系统&#xff0c;大多数都是Java/Go 技术栈MySQL&#xff0c;但是随着时间的推移&#xff0c;数据库数据的数据量过多&#xff0c;并且会频繁访问热点数据&#xff0c;为了提升系统的性能&#xff0c;一般都是加入缓存中间件、Redis。 局部性原理 我们知道…

springboot小知识:配置feign服务超时时间

背景&#xff1a;当前项目通过feign服务调用了其他两个项目的接口&#xff0c;但是由于特殊需求&#xff0c;需要调整某一个项目的feign服务的默认超时时间&#xff1a; 默认连接超时10秒&#xff0c;默认读取超时时间 60秒 1.找到定义的FeignClient 2.根据FeignClient定义的名…

创建python环境——Anaconda

在Windows中安装Anaconda和简单使用 一.Anaconda发行概述 Anaconda是一个可以便捷获取和管理包&#xff0c;同时对环境进行统一管理的发行版本&#xff0c;它包含了conda、 Python在内的超过180个科学包及其依赖项。 1.Anaconda发行版本具有以下特点&#xff1a; (1)包含了…

Redis笔记——(狂神说)

Nosql概述 为什么要用NoSql&#xff1f; 1、单机mysql的年代&#xff1a;90年代&#xff0c;网站访问量小&#xff0c;很多使用静态网页html写的&#xff0c;服务器没压力。 当时瓶颈是&#xff1a;1)数据量太大一个机器放不下。2)数据的索引(BTree)&#xff0c;一个机器内存也…

京东商品详情数据(H5端,PC端)高效对接第三方API接口

利用电商API获取数据的步骤 1.申请API接口注册Key和secret接入&#xff1a;首先要在相应电商平台上注册账号并申请API接口。 2.获取授权&#xff1a;在账号注册成功后&#xff0c;需要获取相应的授权才能访问电商API。 3.调用API&#xff1a;根据电商API提供的请求格式&…