Qt学习Day0:Qt简介
0. 关于Qt
Qt是C++的实践课,之前在C++中学习的语法可以有具体的应用场景。Qt的代码量很大,不要死记硬背,学会查询文档的能力更加重要。
建议提升一下相关单词的储备量:
1. Qt是什么?
Qt是一个基于C++语言的图形用户界面(GUI)框架,但是Qt不仅仅可以进行界面开发,还包含很多传统编程的功能:多线程、访问数据库、图像处理、音视频处理、网络通信、文件IO......
下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 、微信(4.0以上)等。
Qt的开发产品可以分为三类:
1. 纯软件产品
例如上面的一些知名软件产品。
2. 嵌入式:上位机
3. 嵌入式:自带屏幕的硬件
2. Qt优势(掌握)
Qt最大的优势就是跨平台特性:一次编程,到处编译。
面向对象开发
丰富的API(应用程序接口)和对应的开发文档
易用的开发环境
开源(开源刺客)
3. 新建项目
在新建项目之前,需要先把之前C++设置的编码改回UTF-8,设置完成后重启Qt Creator。
下面是新建并运行一个Qt项目的操作步骤:
1. 点击
2. 直接使用默认的项目类型。
3. 设置项目名称和路径。
4. 使用默认的编译器。
5. 把基类改为QDialog
6. 项目管理界面点击完成。
7. 点击
编译并运行,自带程序会有一个弹窗。
4. 项目结构(掌握)
工作目录:即创建项目时选择的目录,用来存放项目开发时的各种工程文件,包括源代码、贴图、设计文件等。
构建目录:存放编译过程中生成的文件和最终的可执行程序。
打开工作目录,可以看到项目中自带的各种开发对应的文件:
● .pro文件
用于配置项目参数,还可以用于项目导入。
#-------------------------------------------------
#
# Project created by QtCreator 2025-04-23T09:31:34
#
#-------------------------------------------------# 在当前的项目中加入core模块和gui模块
QT += core gui# 如果当前项目的版本大于4,则添加widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 项目编译的可执行文件名称
TARGET = Day1_24121_Helloworld
# 项目的模板为应用程序(别动)
TEMPLATE = app# 项目中包含的源文件
SOURCES += main.cpp\dialog.cpp# 项目中包含的头文件
HEADERS += dialog.h# 项目中包含的界面文件
FORMS += dialog.ui
在确认工作目录的路径不包含中文的前提下,双击.pro文件可以导入项目。
● .user文件
不在Qt Creator中显示,但是项目构建后,会在工作目录中自动生成,内部包含了当前项目在当前设备中运行的环境信息,不同的设备此文件不通用,在导入项目之前需要删除此文件。
上面三个文件同属一个类:Dialog
● .cpp源文件用于编写类的定义
#include "dialog.h"
#include "ui_dialog.h"/*** @brief Dialog::Dialog 构造函数* @param parent*/
Dialog::Dialog(QWidget *parent) :
QDialog(parent), // 透传构造
ui(new Ui::Dialog) // 构造初始化列表
{ui->setupUi(this);
}/*** @brief Dialog::~Dialog 析构函数*/
Dialog::~Dialog()
{delete ui; // 释放成员变量的堆内存
}
● .h头文件用于编写类的声明
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog> // 引入对话框窗口的基类头文件namespace Ui {class Dialog;
}/*** @brief The Dialog class 自定义对话框窗口类*/
class Dialog : public QDialog
{
Q_OBJECTpublic:
explicit Dialog(QWidget *parent = 0); // 构造函数
~Dialog(); // 析构函数private:
Ui::Dialog *ui; // 成员变量
};#endif // DIALOG_H
● .ui文件用于编写类的界面
● main.cpp
主程序文件,内部包含主函数,即程序运行的入口。
#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{// 创建了一个QApplication对象(管家)QApplication a(argc, argv);// 创建一个自定义窗口类对象Dialog w;// 展示窗口w.show();return a.exec(); // 进入主事件循环
}
5. 查询文档(掌握)
Qt的使用必须依赖于文档,以下是三种查询文档的方法:
1. 在Windows中打开Assistant程序。
2. 在Qt Creator中点击“帮助”
3. 在Qt Creator中光标定位到要查询的内容,双击键盘F1
查询的类首页结构如下:
注意,当程序运行出现Permission Denied信息时,表示当前项目已经有一个实例在运行了,需要关闭正在运行的实例,重新运行。
如果找不到运行窗口,就点击停止按钮。
6. 调试信息(掌握)
前期学习尽量简化项目,因此在创建项目时,先不选择界面文件。
在Qt中使用QDebug输出调试信息,QDebug可以把信息在后台显示,用户在前台不可见,而C/C++没有前后台的概念。
dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug> // 调试信息类class Dialog : public QDialog
{
Q_OBJECTpublic:
Dialog(QWidget *parent = 0);
~Dialog();
};#endif // DIALOG_H
dialog.cpp
#include "dialog.h"Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{// Qt中函数和变量使用小驼峰命名法// 第一个单词全小写,后面的单词首字母大写qDebug() << "你好" << "世界"; // <<之间自动空格qDebug() << "构造函数"; // 分号之后自动换行
}Dialog::~Dialog()
{qDebug() << "析构函数";
}
main.cpp
#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}
相关文章:
Qt学习Day0:Qt简介
0. 关于Qt Qt是C的实践课,之前在C中学习的语法可以有具体的应用场景。Qt的代码量很大,不要死记硬背,学会查询文档的能力更加重要。 建议提升一下相关单词的储备量: 1. Qt是什么? Qt是一个基于C语言的图形用户界面&a…...
JAVA设计模式——(十二)原型模式(Prototype Pattern)
JAVA设计模式——(十二)原型模式(Prototype Pattern) 介绍理解实现Email类测试 应用 介绍 用原型实例指定创建对象的种类,并且通过复制原型已有的对象用于创建新的对象。 理解 原型实例便是我们需要复制的类的实例&…...
C++命名空间
什么是命名空间 命名空间是一种用来避免命名冲突的机制,它可以将一段代码的名称隔离开,使其与其他代码的名称不冲突 简单来说,就是编译器检测到相同的名称的函数,变量,或者其他的相同名称的东西,也许会有疑问,怎么能出现相同的名称的变量呢.这就是C引入的…...
Hello Robot 推出Stretch 3移动操作机器人 提升开源与可用性
Stretch 3机器人是Hello Robot推出的新一代移动操作机器人,专注于提升开源开发与实际应用能力。它结合了先进的设计理念和工程技术,旨在为家庭任务和辅助技术提供智能化解决方案。通过优化硬件性能和软件兼容性,这款机器人不仅增强了灵活性&a…...
[Linux_69] 数据链路层 | Mac帧格式 | 局域网转发 | MTU MSS
目录 0.引入 1.以太网帧格式 2.重谈局域网转发的原理(基于协议) 小结 3.认识MTU 3.1MTU对IP协议的影响 3.2MTU对UDP协议的影响 3.3MTU对于TCP协议的影响 0.引入 在去年的这篇文章中,我们有对网络进行过一个概述[Linux#47][网络] 网络协议 | TCP/IP模型 | 以…...
I2C总线驱动开发:MPU6050应用
引言 I2C(Inter-Integrated Circuit)总线作为嵌入式系统中广泛使用的通信协议,在传感器、外设控制等领域扮演着重要角色。本文将深入探讨I2C总线的工作原理、Exynos4412平台裸机驱动实现、Linux内核中的I2C子系统架构,并以MPU605…...
15.命令模式:思考与解读
原文地址:命令模式:思考与解读 更多内容请关注:深入思考与解读设计模式 引言 在软件开发中,尤其是当系统涉及多个请求、操作或任务时,你是否遇到过这样的情况:每个操作都有自己的执行逻辑,且这些操作可能…...
2025年软件工程与数据挖掘国际会议(SEDM 2025)
2025 International Conference on Software Engineering and Data Mining 一、大会信息 会议简称:SEDM 2025 大会地点:中国太原 收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、会议简介 2025年软件开发与数据挖掘国际会议于…...
博客系统测试报告
文章目录 目录1. 项目背景2. 项目简介3. 测试工具4. 测试用例5. 功能测试6. 性能测试7. 弱网测试8. 自动化测试9. bug简述10. 测试结论 目录 项目背景项目简介测试工具测试用例功能测试性能测试弱网测试自动化测试bug简述测试结论 1. 项目背景 为了将平时自己写的笔记、知识…...
window 显示驱动开发-线程同步和 TDR
下图显示了 Windows 显示驱动程序模型 (WDDM) 中显示微型端口驱动程序的线程同步的工作原理 如果发生硬件超时,则会启动 超时检测和恢复 (TDR) 进程。 GPU 计划程序调用驱动程序的 DxgkDdiResetFromTimeout 函数,这将重置 GPU。 DxgkDdiResetFromTimeou…...
GEC6818蜂鸣器驱动开发
相关知识:Linux设备驱动开发 insmod 编译好的.ko文件后再运行beep_app.c编译完成的可执行文件即可使板子蜂鸣。 beep_drv.c: #include <linux/module.h> //包含了加载模块时需要使用的大量符号和函数声明 #include <linux/kernel.h> //包含了printk内…...
WPF MVVM入门系列教程(五、命令和用户输入)
🧭 WPF MVVM入门系列教程 一、MVVM模式介绍二、依赖属性三、数据绑定四、ViewModel五、命令和用户输入六、ViewModel案例演示 WPF中的命令模型 在WPF中,我们可以使用事件来响应鼠标和键盘动作。 但使用事件会具备一定的局限性,例如&#x…...
基于Jetson Nano与PyTorch的无人机实时目标跟踪系统搭建指南
引言:边缘计算赋能智能监控 在AIoT时代,将深度学习模型部署到嵌入式设备已成为行业刚需。本文将手把手指导读者在NVIDIA Jetson Nano(4GB版本)开发板上,构建基于YOLOv5SORT算法的实时目标跟踪系统,集成无人…...
创建简易个人关系图谱(Neo4j )
1. 启动 Neo4j 并进入 Neo4j Browser 确保 Neo4j 已启动,访问: http://localhost:7474/2. 创建人物节点(Person) (1) 创建 Alice CREATE (alice:Person {name: "Alice", age: 28, gender: "Female"}) RETUR…...
JavaScript 到命令和控制 (C2) 服务器恶意软件分析及防御
攻击始于一个经过混淆的JavaScript文件,该文件从开源服务中获取编码字符串以执行PowerShell脚本。然后,该脚本从一个IP地址和一个URL缩短器下载一个JPG图像和一个文本文件,这两个文件都包含使用隐写术嵌入的恶意MZ DOS可执行文件。这些有效载荷一旦执行,就会部署Stealer恶意…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何自动打开“安全性与隐私“控制面板?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
springboot微服务连接nacos超时
问题现象 java应用启动失败,查看日志,发现是连接Nacos超时,获取不到配置,导致dubbo注册失败,错误日志如下: 2025-05-01 14:50:08.973 ERROR [TW-172.29.245.61-9063-3] [com.alibaba.nacos.common.utils.…...
react-transition-group 在 React 18 及以上版本中的兼容性问题
出现问题 在React19中下载react-transition-group(4.4.5),正常导入使用: 出现下述报错: 报错原因 React18开始,已废弃findDOMNode ,而 react-transition-group 的 4.4.5 版本仍然使用了 findD…...
day17 天池新闻数据KMeans、DBSCAN 与层次聚类的对比
在数据分析中,聚类是一种常见的无监督学习方法,用于将数据划分为不同的组或簇。本文将通过news数据集(news.csv),使用 KMeans、DBSCAN 和层次聚类三种方法进行聚类分析,并对比它们的性能。 数据来源于天池 …...
数学复习笔记 3
background music 《有人懂你》赵十三 前言 也别开始强化吧,复盘前面复习过的内容,可能是更稳的方式。 无穷级数 写无穷级数的例题。感觉自己真的学会了么,我生怕一写一个不吱声了。呜呜呜。这一章有 27 个例题。我从最后一个例题开始写…...
Navicat Premium 17 备份,还原数据库(PostGreSql)
目录 备份 还原备份 备份 1、点击数据库,点击备份 2、点击新建备份 3、点击备份,查看执行日志 还原备份 1、点击备份、右键还原备份从... 2、 选择文件目录,以及xxx.nb3文件,点击打开 3、点击还原 4、执行日志...
25_05_02Linux架构篇、第1章_03安装部署nginx
Linux_基础篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:安装部署nginx 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.02 适用环境: Centos7 文档说明 本文档聚焦于 CentOS 7 环境下 Nginx 的安装部…...
PostgreSQL存储过程“多态“实现:同一方法名支持不同参数
引言 在传统编程语言中,方法重载(同一方法名不同参数)是实现多态的重要手段。但当我们将目光转向PostgreSQL数据库时,是否也能在存储过程(函数)中实现类似的功能?本文将深入探讨PostgreSQL中如…...
Messenger.Default.Send 所有重载参数说明
Messenger.Default.Send 是 MVVM 框架中实现消息传递的核心方法,其重载参数主要用于控制消息的发送范围和接收条件。以下是其所有重载形式及参数说明: 1. 基本消息发送 Send<TMessage>(TMessage message) 参数说明: TMessage:消息类型(泛型参数),可以是任…...
java安全入门
文章目录 java基础知识this变量方法可变参数构造方法继承的关键字protected super阻止继承方法重载向上转型和向下转型多态抽象接口static静态字段default方法 包final内部类 java序列化与反序列化反射urldns链动态代理类加载器(ClassLoader)双亲委派模型…...
【开源深度解析】从零打造AI暗棋对战系统:Python实现中国象棋暗棋全攻略
🎲【开源深度解析】从零打造AI暗棋对战系统:Python实现中国象棋暗棋全攻略 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,…...
UE5 Daz头发转Blender曲线再导出ABC成为Groom
先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用,自带骨骼绑定和控制器,多姿势动画,Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…...
【Java学习】反射
目录 反射类 一、泛型参数 二、反射类类型 三、实例化 1.实例化材料 2.结构信息可使用化 四、使用 1.Class —类完整结构信息 1.1Class<类>实例化 1.2Class<类>实例获取 1.2.1Class类静态获取: 1.2.2信息类静态获取 1.2.3信息类非静态获取 …...
SQLite数据类型
目录 1 SQLite的类型概述 1.1 存储类(Storage Classes) 1.2 类型亲和性(Type Affinity) 2 类型亲和性分配规则 3 数据类型详细说明 3.1 INTEGER类型 3.2 REAL类型 3.3 TEXT类型 3.4 BLOB类型 3.5 NULL类型 3.6 NUMERI…...
Django异步任务处理方式总结
在 Django 中实现异步任务处理是优化性能和用户体验的关键。以下是几种常见的异步任务处理方式及详细说明: 1. Celery(最主流方案) 适用场景:需要可靠、分布式、复杂任务队列的项目(如定时任务、重试机制、多节点部署…...
AI技术下研发体系重构
导语: 人工智能技术已发展70余年,经历了从逻辑符号主义向数据驱动范式的转变,目前正处于向多模态、通用化以及伦理化方向演化的阶段。在接下来的五年内,人工智能技术的商业化应用预计将迎来关键性的转变。大模型技术的突破、多模…...
UE5 使用插槽和物理约束对角色新增的饰品添加物理效果
这是一条项链,分为链部分和吊坠部分 新增物理碰撞资产,链部分在前面(作为固定),吊坠部分在后面(作为物理模拟) 链部分的Physics设置 连接部分的设置 吊坠部分 添加物理约束,在Constraint里面添加角色名和饰品名 在约束里面可以对特定骨骼约束,这里需要把链部分约束...
邂逅蓝耘元生代:ComfyUI 工作流与服务器虚拟化的诗意交织
往期推荐: 探秘蓝耘元生代:ComfyUI 工作流创建与网络安全的奇妙羁绊-CSDN博客 工作流 x 深度学习:揭秘蓝耘元生代如何用 ComfyUI 玩转 AI 开发-CSDN博客 探索元生代:ComfyUI 工作流与计算机视觉的奇妙邂逅-CSDN博客 解锁元生代&a…...
【Elasticsearch】在kibana中能获取已创建的api keys吗?
在 Kibana 中,目前没有直接的界面功能可以列出或查看已创建的 API 密钥(API keys)。API 密钥的管理和查看主要通过 Elasticsearch 的 REST API 来完成,而不是通过 Kibana 的管理界面。 在 Kibana 中使用 Dev Tools 查看 API 密钥…...
[论文阅读]Deep Cross Network for Ad Click Predictions
摘要 特征工程是许多预测模型成功的关键。然而,这个过程是困难的,甚至需要手动特征工程或穷举搜索。DNN能够自动学习特征交互;然而,它们隐式地生成所有的交互,并且不一定有效地学习所有类型的交叉特征。在本文中&…...
薪技术|0到1学会性能测试第45课-apache调优技术
前面的推文我们掌握了apache监控技术,今天我们继续来看下apache调优技术,究竟是怎么做性能调优???后续文章都会系统分享干货,带大家从0到1学会性能测试。 Apache调优技术 Apache最近的版本是2.2版,Apache2.2是一个多用途的web服务器,其设计在灵活性、可移植性和性能中…...
Linux之基础开发工具二(makefile,git,gdb)
目录 一、自动化构建-make/makefile 1.1、背景 1.2、基本使用 1.3、推导过程 1.4、语法拓展 二、进度条小程序 2.1、回车与换行 2.2、行缓冲区 2.3、练手-倒计时程序 2.4、进度条程序 三、版本控制器-Git 3.1、版本控制器 3.2、gitee的使用 3.2.1、如何创建仓库 …...
cesium之自定义地图与地图叠加
在appvue中,cesium支持更换不同的地图资源,代码如下 <template><div id"cesiumContainer" ref"cesiumContainer"></div> </template><script setup> import * as Cesium from cesium; import "./Widgets/widgets.css&…...
链表结构深度解析:从单向无头到双向循环的实现全指南
上篇博客实现动态顺序表时,我们会发现它存在许多弊端,如: • 中间/头部的插⼊删除,时间复杂度为O(N) • 增容需要申请新空间,拷⻉数据,释放旧空间。会有不⼩的消耗。 • 增容⼀般是呈2倍的增⻓,…...
Apache Velocity代码生成简要介绍
Apache Velocity 概述 Apache Velocity 是一个基于 Java 的模板引擎,它允许将 Java 代码与 HTML、XML 或其他文本格式分离,实现视图与数据的解耦。在 Web 开发中,Velocity 常用于生成动态网页内容;在其他场景下,也可用…...
阿里云前端Nginx部署完,用ip地址访问却总访问不到,为什么?检查安全组是否设置u为Http(80)!
根据你的描述,Ping测试显示数据包无丢失但无法通过公网IP访问服务,说明网络基础层(ICMP协议)是通畅的,但更高层(如TCP/UDP协议或服务配置)存在问题。以下是系统性排查与解决方案: 一…...
【Hive入门】Hive行级安全:基于Apache Ranger的细粒度访问控制深度解析
引言 在大数据时代,数据安全与隐私保护已成为企业不可忽视的核心需求。传统表级权限控制已无法满足"同一张表不同用户看到不同数据"的业务场景,行级安全(Row-Level Security)成为数据仓库系统的必备能力。 1 行级安全概述 1.1 什么是行级安全…...
Marin说PCB之1000-BASE-T1的PCB设计总结--04
另外一路的1000-BASE-T1 Circuit:千兆以太网的仿真电路原理图的连接搭建方式如下: (共模电感的连接需要特别注意一下PIN序别搞错了) 这一路1000-BASE-T1 Circuit是做了兼容设计的: 其中电容C2099和C2100是百兆以太网的…...
两数之和(暴力+哈希查找)
目录 一.题目 二.解题过程 题目解析 方法一(暴力求解) 思路 代码 提交结果 方法二(哈希查找) 思路 代码 提交结果 作者的个人gitee 作者的算法讲解主页▶️ 每日一言:“愿你纵踩淤泥,也要…...
Qt项目——天气预报
目录 前言结果预览工程文件窗体无状态栏窗口跟随移动HTTP基本概念JSON数据QT解析JSON数据结语 前言 通过对之前Qt的学习其实我们就已经有一点经验了,做天气预报只需要了解以下内容: stylesheet界面美化 Json数据解析 HTTP通信 自定义控件绘制温度 结果预…...
智能推理DeepSeek-R1+Word深度整合业级智能办公构建
前引: 当我们将DeepSeek-R1深度集成到Word时,实际上是在构建智能办公的"数字神经系统"。这个系统不仅理解文字内容,更能感知用户意图,在恰当的时刻提供精准的智能辅助。随着RAG(检索增强生成)技术…...
【C++ Qt】常用输入类下:Combo Box/Spin Box/DataTimeEdit/Dial/Slide
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 在Qt开发框架中,UI组件是构建用户交互界面的基石。本章将详细探讨Qt中常用的UI组件,包括下拉框(QComboBoxÿ…...
基于Piecewise Jerk Speed Optimizer的速度规划算法(附ROS C++/Python仿真)
目录 1 时空解耦运动规划2 PJSO速度规划原理2.1 优化变量2.2 代价函数2.3 约束条件2.4 二次规划形式 3 算法仿真3.1 ROS C仿真3.2 Python仿真 1 时空解耦运动规划 在自主移动系统的运动规划体系中,时空解耦的递进式架构因其高效性与工程可实现性被广泛采用。这一架…...
K8s 常用命令、对象名称缩写汇总
K8s 常用命令、对象名称缩写汇总 前言 在之前的文章中已经陆续介绍过 Kubernetes 的部分命令,本文将专题介绍 Kubernetes 的常用命令,处理日常工作基本够用了。 集群相关 1、查看集群信息 kubectl cluster-info # 输出信息Kubernetes master is run…...
C++编程语言:从高效系统开发到现代编程范式的演进之路
目录 前言一、c简介1.1 起源1.2 c的特点 二、开发环境搭建 2.1. 安装 Qt 开发工具2.2 修改编码环境 2.3创建第一个 Qt 项目2.4 c的编译过程2.5 代码示例 2.6 qt疑难杂症 2.6.1 遇到无法删除代码,一点击光标就变成小黑块2.6.2 遇到运行不弹出终端 编辑 2.6.3 遇到…...