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

文章目录

  • 遇见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.mzph.cn/diannao/69476.shtml

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

相关文章

Linux——基础命令1

$&#xff1a;普通用户 #&#xff1a;超级用户 cd 切换目录 cd 目录 &#xff08;进入目录&#xff09; cd ../ &#xff08;返回上一级目录&#xff09; cd ~ &#xff08;切换到当前用户的家目录&#xff09; cd - &#xff08;返回上次目录&#xff09; pwd 输出当前目录…

Linux 调用可执行程序

Linux 调用可执行程序 1. system() 函数1.1 system() 函数的声明1.2 system() 函数的不同场景返回值1.3 system() 函数的代码示例 2. exec() 函数族2.1 exec() 函数族的声明2.2 exec() 函数族执行失败的情况2.3 exec() 函数族的代码示例 3. exec() 与 system() 的区别以及使用注…

Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

【提示词工程】探索大语言模型的参数设置:优化提示词交互的技巧

在与大语言模型(Large Language Model, LLM)进行交互时,提示词的设计和参数设置直接影响生成内容的质量和效果。无论是通过 API 调用还是直接使用模型,掌握模型的参数配置方法都至关重要。本文将为您详细解析常见的参数设置及其应用场景,帮助您更高效地利用大语言模型。 …

Ollama + AnythingLLM + Deepseek r1 实现本地知识库

1、Ollama&#xff1a;‌是一个开源的大型语言模型 (LLM)服务工具&#xff0c;旨在简化在本地运行大语言模型的过程&#xff0c;降低使用大语言模型的门槛‌。 2、AnythingLLM&#xff1a;是由Mintplex Labs Inc. 开发的一款全栈应用程序&#xff0c;旨在构建一个高效、可定制、…

伪分布式Spark3.4.4安装

参考&#xff1a;Spark2.1.0入门&#xff1a;Spark的安装和使用_厦大数据库实验室博客 我的版本&#xff1a; hadoop 3.1.3 hbase 2.2.2 java openjdk version "1.8.0_432" 问了chatgpt,建议下载Spark3.4.4&#xff0c;不适合下载Spark 2.1.0: step1 Spark下载…

从运输到植保:DeepSeek大模型探索无人机智能作业技术详解

DeepSeek&#xff0c;作为一家专注于深度学习与人工智能技术研究的企业&#xff0c;近年来在AI领域取得了显著成果&#xff0c;尤其在无人机智能作业技术方面展现了其大模型的强大能力。以下是从运输到植保领域&#xff0c;DeepSeek大模型探索无人机智能作业技术的详解&#xf…

【Vitest】单元测试

文章目录 测试&#xff1a;Vitest一、安装二、断言三、回调测试四、对象方法五、模拟第三库 测试&#xff1a;Vitest 一、安装 npm install vitest创建文件&#xff1a;example.test.ts 运行测试&#xff1a; npx vitest example二、断言 import { expect, test } from vi…

Android 中实现 PDF 预览三种方式

目录 1. 使用第三方库 PdfRenderer&#xff08;适用于 Android 5.0 及以上&#xff09; 步骤&#xff1a;2. 使用第三方库 MuPDF步骤&#xff1a;3. 使用第三方库 PdfiumAndroid步骤&#xff1a; 1. 使用第三方库 PdfRenderer&#xff08;适用于 Android 5.0 及以上&#xff09…

免费windows pdf编辑工具Epdf

Epdf&#xff08;完全免费&#xff09; 作者&#xff1a;不染心 时间&#xff1a;2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器&#xff0c;目前仍在开发中。它提供了一系列实用的命令行选项&#xff0c;方便用户对 PDF …

Android FCM推送及通知栏展示

需求&#xff1a; 实现FIrebase Cloud Message推送功能&#xff0c;用户收到通知后&#xff0c;可以悬浮通知&#xff0c;自定义的大/小通知展示在通知栏&#xff0c;判断前台/后台&#xff0c;点击后进行跳转。 步骤&#xff1a; 一、配置及接入依赖库 1.下载 google-serv…

基于深度学习的人工智能量化衰老模型构建与全流程应用研究

一、引言 1.1 研究背景与意义 1.1.1 人口老龄化现状与挑战 人口老龄化是当今全球面临的重要社会趋势之一,其发展态势迅猛且影响深远。根据联合国的相关数据,1980 年,全球 65 岁及以上人口数量仅为 2.6 亿,到 2021 年,这一数字已翻番,达到 7.61 亿,而预计到 2050 年,…

UnityShader学习笔记——深度与法线纹理

——内容源自唐老狮的shader课程 目录 1.概述 1.1.分别指什么 1.2.如何获取 1.2.1.对摄像机赋值 1.2.2.在Shader中声明 1.2.3.获取深度值 1.2.4.获取法线纹理 1.3.背后的原理 1.3.1.深度纹理中存储的是什么信息 1.3.2.法线纹理中存储的是什么信息 1.3.3.unity是如何…

OnlyOffice docker 运行(详细)

下载镜像 推荐使用 GitHub Action 方式下载&#xff1a; Action 地址&#xff1a;https://github.com/Shixuebin/DockerTarBuilder 教程地址&#xff1a;https://www.bilibili.com/video/BV1EZ421M7mL/ docker 镜像安装 docker load -i xxx.tar镜像运行 docker run -i -t -…

mysql 存储过程和自定义函数 详解

首先创建存储过程或者自定义函数时&#xff0c;都要使用use database 切换到目标数据库&#xff0c;因为存储过程和自定义函数都是属于某个数据库的。 存储过程是一种预编译的 SQL 代码集合&#xff0c;封装在数据库对象中。以下是一些常见的存储过程的关键字&#xff1a; 存…

基于STM32的智能鱼缸水质净化系统设计

&#x1f91e;&#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是智能鱼缸水质净化系统。 目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 1、设计要求…

如何打造一个更友好的网站结构?

在SEO优化中&#xff0c;网站的结构往往被忽略&#xff0c;但它其实是决定谷歌爬虫抓取效率的关键因素之一。一个清晰、逻辑合理的网站结构&#xff0c;不仅能让用户更方便地找到他们需要的信息&#xff0c;还能提升搜索引擎的抓取效率 理想的网站结构应该像一棵树&#xff0c;…

尝试在Excel里调用硅基流动上的免费大语言模型

我个人觉得通过api而不是直接浏览器客户端聊天调用大语言模型是使用人工智能大模型的一个相对进阶的阶段。 于是就尝试了一下。我用的是老师木 袁进辉博士新创的硅基流动云上的免费的大模型。——虽然自己获赠了不少免费token&#xff0c;但测试阶段用不上。 具体步骤如下&am…

mongodb 使用内存过大分析

os 分析 内存使用 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head -10swap 使用 for i in $(ls /proc | grep "^[0-9]" | awk $0>100); do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i/smaps;done| sort -k2nr | headmo…

整理:熟悉MySQL的使用和运行原理,掌握索引、事务、锁等机制。了解存储引擎、读写分离、分库分表。

系列博客目录 文章目录 系列博客目录1.MySQL的运行原理2.MySQL的使用步骤 1&#xff1a;创建数据库步骤 2&#xff1a;创建表2.1 创建 users 表2.2 创建 products 表 步骤 3&#xff1a;插入数据3.1 向 users 表插入数据3.2 向 products 表插入数据 步骤 4&#xff1a;查询数据…