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 输出当前目录…

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…

免费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 …

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

一、引言 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是如何…

基于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…

“公路养护新利器!公路 AI 智慧巡检系统

家人们&#xff0c;咱日常开车出行&#xff0c;最烦的就是遇到路面坑洼、道路破损的情况&#xff0c;不仅颠簸难受&#xff0c;还存在安全隐患。其实&#xff0c;这些问题都得靠公路养护人员及时发现并处理。但以往的公路巡检工作可不容易&#xff0c;现在好了&#xff0c;有了…

【算法】动态规划专题⑧ —— 分组背包问题 python

目录 前置知识进入正题实战演练总结 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 python 进入正题 分组背包问题的详细解析 1. 问题定义 在 分组背包问题 中&#xff0c;物品被划分为若干组&#xff0c;每组内的物品 互斥&#xff08;只能选择其中一个或…

LLM:DeepSeek 系列(二)

原文链接 3、DeepSeek-V2 DeepSeek-V2 发布于 2024 年 5 月&#xff0c;为多领域专家&#xff08;MoE&#xff09;语言模型&#xff0c;包含总共 2360 亿个参数&#xff0c;其中每个词元激活 210 亿个参数&#xff0c;并支持 12.8 万个词元的上下文长度。DeepSeek-V2 采用包括…

AtCoder Beginner Contest 391(A~E题题解)

A - Lucky Direction 思路&#xff1a;纯模拟的一个水题 #include <bits/stdc.h> using namespace std; #define int long long string s; signed main() { cin>>s;for(int i0;i<s.size();i){char cs[i];if(cN){cout<<"S";}else if(c…

redis中的hash结构

hash类型也叫散列&#xff0c;其中value是一个无序字典&#xff0c;不用像string类型中的value用jason结构去存储&#xff0c;他的value可以将对象中的每个字段独立存储&#xff0c;而且有个好处&#xff0c;方便修改value值 类似于这样 hash类型的常见命令&#xff1a;

USB子系统学习(四)使用libusb读取鼠标数据

文章目录 1、声明2、HID协议2.1、描述符2.2、鼠标数据格式 3、应用程序4、编译应用程序5、测试 1、声明 本文是在学习韦东山《驱动大全》USB子系统时&#xff0c;为梳理知识点和自己回看而记录&#xff0c;全部内容高度复制粘贴。 韦老师的《驱动大全》&#xff1a;商品详情 …

02.08 多路文件IO

思维导图1&#xff1a; 思维导图2&#xff1a; 高效处理多路文件IO&#xff1a;select、poll和epoll模型详解 在现代网络编程中&#xff0c;高效地监视多个文件描述符的IO状态&#xff08;如可读、可写、异常&#xff09;是至关重要的。本文将详细介绍三种常用的多路文件IO模…

opentelemetry-collector 配置elasticsearch

一、修改otelcol-config.yaml receivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318 exporters:debug:verbosity: detailedotlp/jaeger: # Jaeger supports OTLP directlyendpoint: 192.168.31.161:4317tls:insecure: trueotlphttp/prometheus: …