QT修仙之路1-1--遇见QT

server/2025/2/7 10:46:02/

文章目录

  • 遇见QT
    • 二、QT概述
      • 2.1 定义与功能
      • 2.2 跨平台特性
      • 2.3 优点汇总
    • 三、软件安装
    • 四、QT工具介绍(重要)
      • 4.1 Assistant
      • 4.2 Designer
      • 4.3 uic.exe
      • 4.4 moc.exe
      • 4.5 rcc.exe
      • 4.6 qmake
      • 4.7 QTcreater
    • 五、QT工程项目解析(作业)
      • 5.1 配置文件(`.pro`)
      • 5.2 头文件(`.h`)
      • 5.3 源文件(`.cpp`)
      • 5.4 主程序(`main.cpp`)
    • 六、第一个QT界面开发
      • 6.1 创建自定义类
      • 6.2 界面操作代码示例
    • 七、常用类与组件
      • 7.1 信息调试类(`QDebug`)
  • 刷题

遇见QT

二、QT概述

2.1 定义与功能

QT是基于C++编写的一套综合性类库,主要用于图形化界面开发。它不仅包含丰富的界面相关类库,还涉及进程线程库、网络编程库、数据库操作库以及文件操作库等,为开发者提供了一站式的开发解决方案。

2.2 跨平台特性

QT最大的优势之一就是跨平台性,它能在Windows、Linux、MAC等多种操作系统上运行,并且具有较为完备的图形开发库,比Windows的MFC库更强大,这使得很多原本使用MFC进行桌面开发的开发者纷纷转向QT。

2.3 优点汇总

  • 接口封装性好:易于上手,对于学习计算机图形框架具有重要的参考意义。
  • 内存回收机制:QT内部有一套简易好用的内存回收机制,有助于提高开发者的C++水平。
  • 社区环境优良:拥有活跃的社区,市场份额也在稳步上升。
  • 轻量级开发环境:适用于嵌入式开发。

三、软件安装

QT的下载地址为: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工具介绍(重要)

4.1 Assistant

Assistant是QT类库的帮助手册工具,在开发过程中,当我们对某个类或函数的使用存在疑问时,可通过它快速查找相关信息。

4.2 Designer

Designer用于设计图形化界面,生成的界面文件后缀为.ui。该文件内容是一种标记性语言,方便可视化设计界面布局。

4.3 uic.exe

uic.exe可将.ui文件转换为标准的C++代码ui_***.h。在cmd终端中,使用命令C:\Qt\5.15.2\mingw81_64\bin\uic.exe designer.ui -o ui_designer.h即可完成转换。

4.4 moc.exe

moc.exe是元对象编辑器工具,能将QT中非标准的信号和槽转换为标准的C++代码,确保信号与槽机制的正常运行。

4.5 rcc.exe

rcc.exe作为资源管理器,可将QT资源文件(如图片、音频、视频文件)转换为标准的C++代码,便于在项目中管理和使用资源。

4.6 qmake

qmake是工程管理工具,QT工程文件后缀为.pro。qmake根据.pro文件生成Makefile文件,进而编译C++代码。

4.7 QTcreater

QTcreater是QT集成开发环境工具(IDE),它集成了上述所有工具,为开发者提供了一个便捷的统一开发环境。

五、QT工程项目解析(作业)

在这里插入图片描述

5.1 配置文件(.pro

#引入的类库 core核心库 gui图形化界面
QT       += core gui
# 超过版本4的qt会自动加widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# c++11语言
CONFIG += 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 \widget.cpp
#管理头文件
HEADERS += \widget.h
#管理ui文件
FORMS += \widget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

5.2 头文件(.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>  //引入父类//引入命名空间
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }//将ui文件生成的c++类引入
QT_END_NAMESPACE
//自定界面类
class Widget : public QWidget//继承父类
{Q_OBJECT//信号与槽public:Widget(QWidget *parent = nullptr);//有参构造 有默认值~Widget();//析构private:Ui::Widget *ui;//声明ui指针指向ui界面
};
#endif // WIDGET_H

5.3 源文件(.cpp

#include "widget.h"
#include "ui_widget.h"
//实现默认有参构造函数
Widget::Widget(QWidget *parent): QWidget(parent)//初始化父类, ui(new Ui::Widget)//初始化ui界面类
{ui->setupUi(this);//调用父类的setupui
}Widget::~Widget()
{delete ui;//释放堆区空间
}

源文件实现了头文件中声明的构造函数和析构函数。构造函数中初始化ui界面,创建自定义组件并设置相关属性;析构函数释放ui指针指向的堆区空间。

5.4 主程序(main.cpp

#include "widget.h"#include <QApplication>//引入应用程序头文件int main(int argc, char *argv[])
{QApplication a(argc, argv);//使用程序类的有参构造,构造出一个对象Widget w;//自定义界面w.show();//界面展示return a.exec();//轮训监控界面事件
}

六、第一个QT界面开发

6.1 创建自定义类

创建自定义类时需指定父类,如选择QMainWindow作为父类,它会提供菜单栏、状态栏和中央窗口。

6.2 界面操作代码示例

// 信息调试类的使用
qDebug("hello world %d", 520);
qDebug() << "hello world"<< "  "<< 520;
// 打印当前界面的默认尺寸
qDebug() << this->size();
qDebug() << this->height();
qDebug() << this->width();
// 重新设置界面尺寸
this->resize(800, 600);
this->resize(QSize(500,300));
this->setMaximumSize(1000, 800);
this->setMinimumSize(200,100);
this->setFixedSize(800,600);
// 操作窗口名称
qDebug() << this->windowTitle();
this->setWindowTitle("鹏哥快聊");
this->setWindowIcon(QIcon("C:/Users/鹏程万里/Desktop/icon.png"));
// 去除窗口头部
this->setWindowFlag(Qt::FramelessWindowHint);
// 设置窗口样式表
this->setStyleSheet("background-color:pink;");
// 设置窗口透明度
this->setWindowOpacity(0.3);
// 移动窗体位置
//this->move(200,300);
qDebug() << this->pos();

这些代码实现了信息调试、界面尺寸和名称操作、窗口样式和透明度设置等功能。

七、常用类与组件

7.1 信息调试类(QDebug

// 类似于printf
qDebug("", 输出内容);
// 类似于cout
qDebug() << 输出内容;

在这里插入图片描述
在这里插入图片描述

刷题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
请添加图片描述

在这里插入图片描述


http://www.ppmy.cn/server/165657.html

相关文章

【Golang学习之旅】Go 语言基础语法概览

文章目录 前言1. Go 语言简介1.1 Go 语言是什么&#xff1f;1.2 Go 语言的应用场景 2. Go 语言开发环境2.1 安装 Go2.2 配置 Go 环境2.3 Hello, World!&#xff08;第一个 Go 程序&#xff09; 3. Go 语言基础语法3.1 变量与常量3.2 数据类型3.3 条件判断与循环3.4 数组与切片&…

Day48_20250130【回校继续打卡】_单调栈part1_739.每日温度|496.下一个更大元素I|503.下一个更大元素II

Day48_20250130_单调栈part1_739.每日温度|496.下一个更大元素I|503.下一个更大元素II 20250130补完 739.每日温度 题目 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0…

Java_类加载器

小程一言类加载器的基础双亲委派模型核心思想优势 各类加载器的职责 类加载器的工作流程举例&#xff1a;如何在Java中使用类加载器启动类加载器、扩展类加载器与系统类加载器输出解释自定义类加载器 类加载器与类冲突总结 小程一言 本专栏是对Java知识点的总结。在学习Java的过…

补小识JVM中的分代收集理论

JVM的分代收集理论是一套符合大多数程序运行实际情况的经验法则。它基于两个主要的分代假说&#xff1a;弱分代假说和强分代假说。弱分代假说认为&#xff0c;绝大多数对象都是朝生夕灭的&#xff1b;而强分代假说则认为&#xff0c;熬过越多次垃圾收集过程的对象就越难以消亡。…

AI大模型评测对比2—ChatGPT对比DeepSeek

近期&#xff0c;DeepSeek 凭借其超高的性价比与卓越性能&#xff0c;在国内外各大社交媒体平台上赚足了眼球。令人瞩目的是&#xff0c;它仅耗费 2048 块显卡&#xff0c; 600 亿美元的成本&#xff0c;便成功训练出了可与顶级模型比肩的 Deepseek - V3 模型。这与美国公布的一…

3 卷积神经网络CNN

1 Image Classification (Neuron Version) – 1.1 Observation 1 1.2 Observation 2 如果不同的receptive field需要相同功能的neuron&#xff0c;可以使这些neuron共享参数 1.3 Benefit of Convolutional Layer 2 Image Classification (Filter Version) 不用担心filter大小…

mysql8的并行复制介绍

mysql8的并行复制介绍 一、写在前面 大家平时在维护数据库时,肯定遇到过主从复制延迟的问题。传统的复制方式是单线程按顺序执行,这就像排队买票,每个事务只能一个一个处理,遇上高并发场景,等待时间就会变长。为了解决这个问题,MySQL 从 5.6 版本起就开始支持多线程复制…

ES6 对象扩展:对象简写,对象属性 表达式,扩展运算符 ...,Object.assign,Object.is,用法和应用场景

1. 对象属性简写 1.1 基本语法 // 传统写法 const name John; const age 25; const user {name: name,age: age };// ES6 简写语法 const user {name,age };1.2 实际应用场景 // 1. 函数返回对象 function createUser(name, age, email) {return {name,age,email}; }// …