初探---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.hqwc.cn/news/90463.html

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

相关文章

文件上传漏洞复现(CVE-2018-2894)

文章目录 搭建环境启动环境漏洞复现 前提条件&#xff1a; 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub 搭建环境 进入vulhb目录下的weblogic&#xff0c;复现CVE-2018-289…

MPI之MPI_Sendrecv接口以及空进程概念介绍

MPI_Sendrecv函数原型 int MPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag,void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status);其中各个参数的含义如下&…

pycharm 打开Terminal时报错activate.ps1,因为在此系统上禁止运行脚本,并因此无法进入虚拟环境

pycharm 打开Terminal时报错activate.ps1&#xff0c;因为在此系统上禁止运行脚本&#xff0c;并因此无法进入虚拟环境 如下图所示&#xff1a; 网上说可以set_restrictFalse什么的&#xff0c;虽然也可但可能会降低电脑安全性&#xff0c;可以将下面的终端改为cmd.exe即可

(二十)大数据实战——Flume数据采集的基本案例实战

前言 本节内容我们主要介绍几个Flume数据采集的基本案例&#xff0c;包括监控端口数据、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件等案例。完成flume数据监控的基本使用。 正文 监控端口数据 ①需求说明 - 使用 Flume 监听一个端口&am…

Breakpad交叉编译aarch64

原本是在mac os上编译的&#xff0c;但是会出现一些问题&#xff0c;因此还是开了台linux容器进行编译&#xff0c;本文可结合之前的linux下编译breakpad共同查看。 Linux下Breakpad编译_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/130754480?…

4.5 放映演示文稿

制作完成的演示文稿最终是为了向观众进行展示&#xff0c;因此掌握演示文稿放映的技巧至关重要。本节主要介绍演示文稿放映的相关技巧&#xff0c;包括排练计时、自定义放映、设置放映方式以及墨迹画笔等内容。 4.5.1 排练计时 当进行演讲汇报时&#xff0c;常常要使用到幻灯…

低代码的探索之路

Gartner发布报告指出&#xff0c;2023年全球低代码开发平台市场规模将达到345亿美元&#xff0c;比2022年增长20%。 目前&#xff0c;国内外已经有许多低代码平台&#xff0c;包括OutSystems、Mendix、Appian、Microsoft Power App等。这些平台提供了丰富的功能和工具&#xff…

MPC模型预测控制器学习笔记(附程序)

本文用于记录学习DR_CAN老师发布的MPC系列视频教程的相关内容&#xff0c;文章中放的源码也是DR_CAN老师提供的程序示例&#xff0c;链接如下&#xff1a; DR_CAN老师的视频教程链接&#xff08;点击可跳转&#xff09; DR_CAN老师提供的程序示例&#xff08;点击可跳转&#x…

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;证券代码、year、化学需氧量、氨氮排放量、总氮、总磷、水体综合污染当量对数、二氧化硫、氮氧化物、烟尘、空气综合污染当量对数、总…

使用生成式 AI 和 Amazon Kendra 实现企业规模的图像字幕创建和搜索

Amazon Kendra 是一个由机器学习(ML)驱动的智能搜索服务。Amazon Kendra 重新构想了您的网站和应用程序的搜索功能,以便您的员工和客户可以轻松地找到散布在您组织内多个位置和内容存储库中的内容。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、…

day01-ES6新特性以及ReactJS入门

课程介绍 ES6新特性ReactJS入门学习 1、ES6 新特性 1.2、let 和 const 命令 var 之前&#xff0c;我们写js定义变量的时候&#xff0c;只有一个关键字&#xff1a; var var 有一个问题&#xff0c;变量作用域的问题&#xff0c;作用域不可控&#xff0c;就是定义的变量有时会…

MySQL的备份与恢复以及日志管理

目录 一、数据备份的重要性 二、数据库备份的分类 1、物理备份 2、逻辑备份 &#xff08;1&#xff09;完全备份&#xff1a;每次对数据进行完整的备份 &#xff08;2&#xff09;差异备份&#xff1a;备份自从上次完全备份之后被修改的过文件 &#xff08;3&#xff09…