QT基础篇(1)QT概述

1.什么是QT

QT是一个跨平台的C++应用程序开发框架。它提供了一套丰富的图形用户界面(GUI)和多媒体功能,可以用于开发各种类型的应用程序,包括桌面应用程序、移动应用程序和嵌入式系统。QT具有易于使用、可定制性强、性能高等特点,因此被广泛应用于软件开发领域。

2.QT安装

QT的安装比较简单

大家可以从官网直接下载最新版的QT(官网很慢)(Https://www.qt.io)(吐槽,打开都得半天)

大家也可以私信我一下,我会吧资源发给大家

windows和虚拟机的都有(我这的是QT5.12长期稳定版)

之后就是按步骤一直安装就行了(组件那里看自己需要安装,一般建议全部安装(要不然那个组件缺少了后期寻找,添加挺麻烦的))

3.QT开发步骤及实例

QT是一个跨平台的应用程序框架,提供了丰富的GUI(图形用户界面)和功能的开发工具。下面是QT开发的基本步骤及一个实例:

步骤1:安装QT 首先,从QT官方网站(https://www.qt.io/)下载并安装QT。在安装过程中,可以选择安装不同的组件和工具,根据自己的需要进行选择。

步骤2:创建新项目 打开QT Creator软件,点击“新建项目”,选择“QT Widgets应用程序”模板。在项目设置中,可以选择项目名称、目录,以及其他配置选项。

步骤3:设计界面 在QT Creator中,使用“设计”模式,可以通过拖拽控件(如按钮、文本框等)来设计界面。在界面设计中,可以设置控件的属性、布局等。

步骤4:编写代码 在QT Creator中,使用“编辑”模式,可以编写与界面交互的代码。可以在界面加载时进行初始化操作,通过信号与槽机制来实现事件的处理。

步骤5:构建和运行 在QT Creator中,点击“构建”按钮来编译项目。编译成功后,可以点击“运行”按钮来运行项目。可以选择在不同的平台上进行运行和调试。

实例:一个label里输出hello world

运行结果:

这只是最基础的应用

大家经过学习可以做出这样

样式表全靠大家自己调;

4.相关概念解析

伙伴编辑模式

QT中的伙伴编辑模式是一种可以改进用户界面设计的功能。在伙伴编辑模式下,用户可以选择一个控件作为另一个控件的伙伴,使得两个控件的布局关系更加灵活和准确。

伙伴编辑模式可以通过菜单栏的“编辑”选项或者快捷键进入。进入伙伴编辑模式后,用户可以通过鼠标点击来选择和移动控件,并将其与其他控件进行对齐或者分离。用户还可以通过键盘的方向键来微调控件的位置。

在伙伴编辑模式下,用户可以更精确地设置控件的位置和布局,以达到更好的用户界面效果。这对于设计复杂的界面或者需要特定布局的界面非常有用。同时,伙伴编辑模式还可以减少用户操作的复杂性和错误,提高用户体验。

总之,伙伴编辑模式是QT中一种用于改进用户界面设计的工具,通过选择和移动控件来调整它们的布局关系,以使界面更灵活、准确和易用。

信号与槽机制(最重要)

QT的信号与槽机制是一种用于对象间通信的机制,它允许一个对象发送信号,另一个对象接收信号并执行相应的槽函数。

在QT中,信号是在特定事件发生时被触发的。例如,按钮被点击、文本框内容改变等事件。每个对象都可以定义自己的信号,当特定事件发生时,通过emit关键字发送信号。

槽是对象中的成员函数,用于处理信号。一个对象可以有多个槽函数,每个槽函数都可以处理不同的信号。

通过使用connect()函数,可以将信号与槽函数进行连接。这样,当信号被触发时,相应的槽函数会被调用执行。

以下是一个简单的示例:

#include <QObject>
#include <QPushButton>class MyObject : public QObject
{Q_OBJECTpublic slots:void mySlot(){qDebug() << "mySlot called";}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);MyObject obj;QPushButton button("Click me");QObject::connect(&button, &QPushButton::clicked, &obj, &MyObject::mySlot);button.show();return app.exec();
}

在上面的示例中,我们定义了一个继承自QObject的MyObject类,其中包含了一个槽函数mySlot。我们还创建了一个QPushButton对象button,并将其clicked信号连接到了MyObject对象的mySlot槽函数上。

当点击按钮时,按钮的clicked信号会被触发,槽函数mySlot会被调用,并输出"mySlot called"。

通过信号与槽机制,我们可以实现对象间的松耦合,使得程序结构更加清晰和易于维护。同时,QT的信号与槽机制还支持跨线程通信,使得多线程编程变得简单和安全。

这里简单提一下,之后在细说这种机制的优缺点

QT5元对象系统

QT5中的元对象系统是QT的核心机制之一,它提供了一种在运行时获取对象信息和动态操作对象的能力。元对象系统是通过元对象来实现的,每个QObject派生类在编译时都会自动生成一个对应的元对象。

元对象是一个描述QObject派生类的结构信息的数据结构,它包含了类名、父类名、成员函数、信号与槽等信息。通过元对象系统,我们可以在运行时查询和操作元对象。

元对象系统提供了几个重要的宏和函数来使用元对象,包括:

  1. Q_OBJECT宏:在QObject派生类的头文件中使用Q_OBJECT宏来启用元对象系统。这个宏会自动生成元对象的相关代码。

  2. QMetaObject类:用于在运行时查询和操作元对象。可以通过QObject::metaObject()函数获取一个对象的元对象。

  3. QMetaMethod类:用于描述对象的成员函数,可以获取函数的名称、参数列表等信息。可以通过QMetaObject::method()函数获取一个对象的成员函数。

  4. QMetaProperty类:用于描述对象的属性,可以获取属性名称、类型和值等信息。可以通过QMetaObject::property()函数获取一个对象的属性。

通过元对象系统,我们可以实现一些高级功能,如在运行时动态地连接信号与槽、获取对象的属性和方法等。元对象系统为QT提供了强大的反射能力,使得QT成为一个非常灵活的开发框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/345944.html

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

相关文章

uniapp中uview组件库的AlertTips 警告提示使用方法

目录 #使用场景 #平台差异说明 #基本使用 #图标 #可关闭的警告提示 #API #Props #Events 警告提示&#xff0c;展现需要关注的信息。 #使用场景 当某个页面需要向用户显示警告的信息时。非浮层的静态展现形式&#xff0c;始终展现&#xff0c;不会自动消失&#xff0…

海外融合CDN之火伞云

在当今互联网全球化的时代&#xff0c;出海业务已经成为许多企业的必然选择。在海外市场上&#xff0c;快速、稳定的内容传输对于企业的成功至关重要。然而&#xff0c;如何合理的运用多家CDN供应商的资源实现智能化的调度&#xff0c;以及如何与业务更紧密地结合起来&#xff…

css如何让两个元素在同一水平线上(文字和svg图片)

一开始写发现这两者不在同一水平线 起初用margin-top margin-bottom来协调 发现效果并不好 1&#xff1a;写法僵硬 2&#xff1a;margin会把div撑破&#xff0c;达不到预期效果&#xff08;padding也是&#xff09; 3. 加了flex布局 之后, 因为我这个是在表格里面,无法居中…

C++六大组件之一:仿函数

场景一&#xff1a; 与其过多叙述定义&#xff0c;不如在下面一个场景中来理解仿函数&#xff1a; #include<iostream> using namespace std; template<class T> void bubbles_sort(T* arr,int size) //冒泡排序 {for (int i 0; i < size - 1; i){for (int j…

爬虫案例—表情党图片data-src抓取

爬虫案例—表情党图片data-src抓取 表情党网址&#xff1a;https://qq.yh31.com 抓取心情板块的图片data-src 由于此页面采用的是懒加载技术&#xff0c;为了节省网络带宽和减轻服务器压力。不浏览的图片&#xff0c;页面不加载&#xff0c;统一显示LOADING…。如下图&#x…

模拟退火算法(SA)解决旅行商(TSP)问题的python实现

旅行商问题 旅行商问题&#xff08;Travelling Salesman Problem, 简记TSP&#xff0c;亦称货郎担问题)&#xff1a;设有n个城市和距离矩阵D [dij]&#xff0c;其中dij表示城市i到城市j的距离&#xff0c;i, j 1, 2 … n&#xff0c;则问题是要找出遍访每个城市恰好一次的一…

最最常用的MySQL Shell运维脚本,赶紧收藏吧!

作为运维人员或者开发人员&#xff0c;日常的mysql运维工作我们是一定要会的&#xff0c;我收集了一些常用shell脚本&#xff0c;仅供参考&#xff01; 1、备份数据库&#xff1a; #!/bin/bashBACKUP_DIR"backup_dir" MYSQL_USER"mysql_user" MYSQL_PASS…

【Databend】行列转化:数据透视和逆透视

文章目录 数据准备数据透视数据逆透视总结 数据准备 学生学科得分等级测试数据如下&#xff1a; drop table if exists fact_suject_data; create table if not exists fact_suject_data (student_id int null comment 编号,subject_level varchar null comment …

Unity中URP下实现深度贴花(雾效支持和BRP适配)

文章目录 前言一、让我们的贴画支持雾效1、我们舍弃内部的MixFog方法2、使用 雾效混合因子 对最后输出颜色进行线性插值相乘 二、在Shader中&#xff0c;限制贴花纹理的采样方式1、申明 纹理 和 限制采样方式的采样器2、在片元着色器进行纹理采样 三、BRP适配1、C#脚本中&#…

Github Copilot AI保密级教程

Copilot 是一款由 OpenAI 推出的人工智能代码自动补全AI工具&#xff0c;它可以帮助程序员更快、更准确地编写代码。Copilot 的核心技术基于 GPT-3 模型&#xff0c;但是在编码方面是优于GPT-3的&#xff0c;它可以根据程序员输入的上下文和代码提示&#xff0c;自动生成符合语…

2024年美赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

AD20 解决PCB铺铜与锡盘之间锯齿状连接问题的设置方法

上一篇文章&#xff1a;PCB简单绘制一般步骤 对上一篇文章中&#xff0c;关于铺铜设置的补充&#xff0c;解决铺铜与锡盘之间的锯齿状连接情况。 1、新建Demo&#xff0c;创建PCB板子&#xff0c;布置锡盘和铺铜&#xff0c;如图&#xff1a; 2、设置规则&#xff0c;参考上一…