初探---Qt

news2024/12/23 18:10:41

目录

一、介绍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,会加上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>        //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、设置窗口的icon
    this->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_OBJECT

public:
    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、设置窗口的icon
    this->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.coloradmin.cn/o/950553.html

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

相关文章

一篇文章搞定《WebView的优化及封装》

一篇文章搞定《WebView的优化及封装》 前言WebView的过程分析确定优化方案一、预加载&#xff0c;复用缓冲池&#xff08;初始化优化&#xff09;优化的解析说明具体的实现 二、预置模版&#xff08;请求、渲染优化&#xff09;优化的解析说明具体的实现1、离线包2、预获取数据…

【云原生进阶之PaaS中间件】第一章Redis-2.3.3集群模式

1 集群模式 Redis集群是一个提供在多个Redis节点之间共享数据的程序集。它并不像Redis主从复制模式那样只提供一个master节点提供写服务,而是会提供多个master节点提供写服务,每个master节点中存储的数据都不一样,这些数据通过数据分片的方式被自动分割到不同的master节点上…

手写实现call() apply() bind()函数,附有详细注释,包含this指向、arguments讲解

手写实现call() apply() bind()函数是很经典的问题&#xff0c;但是能掰扯清楚的文章确实不算多&#xff0c;于是笔者才决定写下本文&#xff0c;希望能给读者带来一些启发&#xff0c;如有错误欢迎指正。 目录 补充知识 函数中的this指向 类数组对象arguments call() 原理…

Leedcode19. 删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1…

MPI之持久化通信句柄与非持久化通信句柄

MPI_Isend & MPI_Send 创建临时通信句柄 在前面的文章中举了例子&#xff0c;我们使用MPI_Isend接口发送数据时&#xff0c;有个传出参数request&#xff0c;该参数是创建的通信句柄&#xff0c; 实际上该句柄是一个临时句柄&#xff0c;即只用于一次性发送数据的场景&…

uniapp iOS打包证书申请流程——mac

如何在 Mac 创建 iOS 打包证书&#xff1f; 文章目录 如何在 Mac 创建 iOS 打包证书&#xff1f;会员 VS 非会员权限步骤添加设备创建标识符生成证书生成描述文件 前提&#xff1a; Mac 电脑Apple ID 申请Apple ID成为开发者 developer 注意&#xff1a; 登录 Apple ID 成为开…

2023年数字孪生行业研究报告

第一章 行业概况 1.1 定义 数字孪生&#xff08;Digital Twin&#xff09;是一种先进的建模技术&#xff0c;它通过创建一个物理实体的虚拟复制品&#xff0c;以实时模拟、预测和优化实体的行为和性能。这个虚拟模型会同步收集和分析来自其物理对应物的数据&#xff0c;从而提…

【DRONECAN】(三)WSL2 及 ubuntu20.04 CAN 驱动安装

【DRONECAN】&#xff08;三&#xff09;WSL2 及 ubuntu20.04 CAN 驱动安装 前言 这一篇文章主要介绍一下 WSL2 及 ubuntu20.04 CAN 驱动的安装&#xff0c;首先说一下介绍本文的目的。 大家肯定都接触过 ubuntu 系统&#xff0c;但是我们常用的操作系统都是 Windows&#x…

JavaSE基础(2)

1 方法的使用 思维导图 1.1 什么是方法 方法就是一个代码片段. 类似于 C 语言中的 “函数”。方法存在的意义(不要背, 重在体会): 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法…

基于金枪鱼群算法优化的BP神经网络(预测应用) - 附代码

基于金枪鱼群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于金枪鱼群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.金枪鱼群优化BP神经网络2.1 BP神经网络参数设置2.2 金枪鱼群算法应用 4.测试结果&#xff1a;5…

肠道微生物群肾衰竭

编者推荐 该研究应用多组学分析&#xff08;代谢组学分析微生物组学分析&#xff09;分析了人类ESRD肠道微生物组组成、尿毒症毒素和肾衰竭之间的关系&#xff0c;使用独立队列和无菌动物模型对多组学结果及研究提出的ESRD机制假设进行验证&#xff0c;首次从肠道微生物的角度…

qt第一天

#include "widget.h" #include "ui_widget.h" #include "QDebug" Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->resize(QSize(800,600)); //使用匿名对象&#xff0c;调用重…

嵌入式Linux开发实操(十五):nand flash接口开发

# 前言 flash memory,分NAND和NOR: 如果说nor flash有个特点就是能执行代码,NOR并行接口具有地址和数据总线,spi flash更是主要用于存储代码,SPI(或QSPI)NOR代码可就地执行(XiP),一般系统要求flash闪存提供相对较高的频率和数据缓存的clocking。而nand flash主要用于…

QT Creator工具介绍及使用

一、QT的基本概念 QT主要用于图形化界面的开发&#xff0c; QT是基于C编写的一套界面相关的类库&#xff0c;如进程线程库&#xff0c;网络编程的库&#xff0c;数据库操作的库&#xff0c;文件操作的库等。 如何使用这个类库&#xff1a;类库实例化对象(构造函数) --> 学习…

Django静态文件媒体文件文件上传

文章目录 一、静态文件和媒体文件1.在django中使用静态文件实践2.在django中使用媒体文件 二、文件上传单文件上传实践多文件上传 一、静态文件和媒体文件 媒体文件: 用户上传的文件&#xff0c;叫做media 静态文件:存放在服务器的css,js,image,font等 叫做static1.在django中…

【Flutter】使用Android Studio 创建第一个flutter应用。

前言 首先下载好 flutter sdk和 Android Studio。 FlutterSDK下载 Android Studio官网 配置 我的是 windows。 where.exe flutter dart查看flutter安装环境。 如果没有&#xff0c;自己在环境变量的path添加下flutter安装路径。 在将 Path 变量更新后&#xff0c;打开一个…

QTday1(第一个QT界面、常用类与组件)

一、Xmind整理&#xff1a; Assistant帮助文档的使用&#xff1a; 设计师界面的介绍&#xff1a; 各文件之间调用方式&#xff1a; 二、上课笔记整理&#xff1a; 1.第一个QT界面 ①创建自定义类时需要指定父类 ②第一个界面的相关操作 #include "mainwindow.h"…

比Python快3.5万倍的Mojo融资7亿,LLVM之父:不会威胁到Python,该恐惧的应该是C++

近日&#xff0c;Modular AI 公司宣布成功融资 1 亿美元&#xff08;约 7.29 亿人民币&#xff09;&#xff0c;据称这是继去年 3000 万美元融资之后的第二轮融资。 Modular AI 称他们未来的愿景是通过 AI 引擎和 Mojo 为全球开发者提供 AI 基础设施。 Modular AI 是 Chris La…