当前位置: 首页 > news >正文

Qt开发第一讲

一、Qt项目里面有什么?

对各个文件的解释:

Empty.pro文件

QT       += core gui   # 要引入的Qt模块,后面学习到一些内容的时候可能会修改这里
#这个文件相当于Linux里面的makefile文件。makefile其实是一个非常古老的技术了。
#qmake搭配.pro起到作用和makefile是类似的。
#Qt creator 把这个过程中编译的细节都封装好了,不需要过多的关注,只需要点击运行按钮,就直接编译运行了
greaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += 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.0SOURCES += \          main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.ui
#描述了当前项目中,参与构建的文件都有啥(编译器要编译哪些文件)
#这个地方不需要手动修改,Qt Creator帮我们自动维护好# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target# 项目的工程文件,也是qmake构建时候的重要依据。

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//要想使用这个类,就需要包含对应的头文件。Qt
//的设定,使用Qt中内置的类,包含的头文件的名字就是和类名一致的
#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
//创建项目时,选择的父类。
class MainWindow : public QMainWindow
{Q_OBJECT  //是一个Qt内置的宏,宏本质上是文本替换//Qt中有一个非常核心的机制,信号和槽,如果某个类想使用信号和槽,就需要引入//Q_OBJECT这个宏public://Qt中引入了对象树机制,创建的Qt的对象,就可以把这个对象给挂到对象树上,往树上挂的时候//就需要指定父节点。MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui; //和form file密切相关。
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>
//入口函数,命令行参数的个数,argv命令行参数。
int main(int argc, char *argv[])
{//编写一个Qt的图形化界面程序,一定需要有QApplication对象!QApplication a(argc, argv);//创建一个控件对象,并显示出来。它的父类是QWidget,都是QWidget提供的。MainWindow w;//show方法让空间显示出来w.show();//让空间隐藏//w.hide();return a.exec(); //让程序执行起来。在linux中我们学过exec*系列函数,把可执行文件中的代码和数据,替换到当前进程中//但在这里,只是名字恰好一样
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
//构造和析构的实现
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) //把form file生成的界面和当mainwindow关联起来
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>  //xml格式的文件,和html相似。
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"/><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>26</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>

二、Qt Hello World 程序

两种方式实现hello world

1、通过图形化的方式,在界面上创建出一个空间,显示hello world

Qt Designer右上角,通过树形结构,显示出了当前界面上都有哪些控件。

2、通过纯代码的方式,通过编写代码,在界面上创建控件,显示hello world

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("hello world");
}Widget::~Widget()
{delete ui;
}

相关文章:

Qt开发第一讲

一、Qt项目里面有什么&#xff1f; 对各个文件的解释&#xff1a; Empty.pro文件 QT core gui # 要引入的Qt模块&#xff0c;后面学习到一些内容的时候可能会修改这里 #这个文件相当于Linux里面的makefile文件。makefile其实是一个非常古老的技术了。 #qmake搭配.pr…...

详细指南:如何有效解决Windows系统中msvcp140.dll丢失的解决方法

如果你在使用Windows系统时遇到“msvcp140.dll丢失”的错误提示&#xff0c;通常是因为你的计算机上缺少或损坏了msvcp140.dll文件。msvcp140.dll是Microsoft Visual C Redistributable包的一部分&#xff0c;许多应用程序和游戏需要它来正常运行。以下是几种解决msvcp140.dll丢…...

【RabbitMQ】幂等性、顺序性

幂等性 概述 幂等性是数学和计算机科学中某些运算的性质&#xff0c;他们可以被多次应用&#xff0c;而不会改变初始应用的结果。RabbitMQ的幂等性则是指同一条消息&#xff0c;多次消费&#xff0c;对系统的影响是相同的。 一般消息中间件的消息传输保障分为三个层级&#…...

FFmpeg源码:avio_skip函数分析

AVIOContext结构体和其相关的函数分析&#xff1a; FFmpeg源码&#xff1a;avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码&#xff1a;read_packet_wrapper、fill_buffer函数分析 FFmpeg源码&#xff1a;avio_read函数分析 FFmpeg源码&#xff…...

Llama 3.1 技术研究报告-6

6 推理 我们研究了两种主要技术&#xff0c;以使 Llama 3 405B 模型的推理⾼效&#xff1a;(1) 流⽔线并⾏和 (2) FP8 量化。我们已经公开发布了我们的 FP8 量化实现。 6.1 流⽔线并⾏ 当使⽤ BF16 数字表⽰模型参数时&#xff0c;Llama 3 405B 不适合在装有 8 个 Nvidia H1…...

更新日志-Python OS

这么久没更新全是因为这段时间的事情很多&#xff0c;只能一点一点的更新代码&#xff0c;不过好在&#xff0c;也是成功更新出来啦&#xff01; 更新日志&#xff08;2024/9/29&#xff09; 代码全文更新&#xff0c;将所有的绝对路径替换为相对路径&#xff0c;这样在各位大…...

Chrome浏览器的C++内存管理技术揭秘

Chrome浏览器作为全球最流行的网络浏览器之一&#xff0c;其高效的内存管理技术功不可没。本文将深入探讨Chrome浏览器在C中的内存管理技术&#xff0c;并介绍如何通过调整网页加载时间、优化视频播放体验和解决谷歌浏览器占用CPU过高的问题来提升浏览器性能。 &#xff08;本…...

Redis --- redis事务和分布式事务锁

redis事务基本实现 Redis 可以通过 MULTI&#xff0c;EXEC&#xff0c;DISCARD 和 WATCH 等命令来实现事务(transaction)功能。 > MULTI OK > SET USER "Guide哥" QUEUED > GET USER QUEUED > EXEC 1) OK 2) "Guide哥"使用 MULTI命令后可以输入…...

SQL,将多对多的关联记录按行输出

数据库的Primary表和Secondary表有相同的结构&#xff0c;其中W、H、D是主键。Primary表&#xff1a;NameWHDPrimary item 1100500300Primary item 2100600300Primary item 3200500300Primary item 4100500300Primary item 5100600300Primary item 6200500300 Secondary表&…...

【SQL】筛选字符串与正则表达式

目录 语法 需求 示例 分析 代码 语法 SELECT column1, column2, ... FROM table_name WHERE condition; WHERE 子句用于指定过滤条件&#xff0c;以限制从数据库表中检索的数据。当你执行一个查询时&#xff0c;WHERE 子句允许你筛选出满足特定条件的记录。如果记录满…...

【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

目录 Jedis 1.jedis是什么 2.jedis的安装配置 3.jedis的基础命令操作展示 1.set和get操作&#xff1a; 2.exists和del操作&#xff1a; 3.keys和type操作&#xff1a; 4. expire和ttl&#xff1a; Jedis Java 操作 redis 的客⼾端有很多&#xff0c;其中最知名的是 jedi…...

【 微信机器人+ AI 搭建】

摘要&#xff1a; 各种大模型已经出来好久了&#xff0c;各类app也已经玩腻了&#xff0c;接下来&#xff0c;就在考虑&#xff0c;怎么让大模型&#xff0c;利益最大化。 本人没有显著的家世&#xff0c;没有富婆包养&#xff0c;只能自己抽点时间&#xff0c;研究下技术&…...

VGG16网络介绍及代码撰写详解(总结1)

可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作&#xff0c;是一个机器视觉小白&#xff0c;之所以开始入门机器视觉的学习只要是一个idea&#xff0c;想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。 摘要&#xff1a;本文是介绍V…...

多个excel表数据比对操作

多个excel表数据比对操作 本文主要使用两种方法进行比对,分别使用了openpyxl第三方库和pandas第三方库进行数据比对 两种方法优缺点: openpyxy: 优点:主要是处理xlsx的文件,里面方法简单,易懂 缺点:当数据量大的时候,速度很慢,之前我一条一条数据拿出来比较,两百多条…...

golang学习笔记32——哪些是用golang实现的热门框架和工具

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

ZYNQ:开发环境搭建

资料下载 http://47.111.11.73/docs/boards/fpga/zdyz_qimxing(V2).html Vivado软件是什么&#xff1f; Vivado软件是Xilinx&#xff08;赛灵思&#xff09;公司推出的一款集成设计环境&#xff08;IDE&#xff09;&#xff0c;主要用于FPGA&#xff08;现场可编程门阵列&am…...

一步一步丰富生成式语言模型系统

以下是这套生成式语言模型解决任务的流程图概述&#xff1a; #mermaid-svg-sRHDSMUMV1utrg2F {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sRHDSMUMV1utrg2F .error-icon{fill:#552222;}#mermaid-svg-sRHDSMUMV1u…...

Python中元组的常用方法

# 在Python中&#xff0c;元组&#xff08;tuple&#xff09;是一种不可变的序列类型&#xff0c;用于存储多个元素。元组的特点包括&#xff1a; # # 不可变性&#xff1a;一旦创建&#xff0c;元组的元素不能改变。这意味着不能添加、删除或修改元组中的元素。 # 可以包含任何…...

新版本Android Studio如何新建Java code工程

新版本Android Studio主推Kotlin&#xff0c;很多同学以为无法新建Java工程了&#xff0c;其实是可以的&#xff0c;如果要新建Java代码的Android工程&#xff0c;在New Project的时候需要选择Empty Views Activity&#xff0c;如图所示&#xff0c;gradle也建议选为build.grad…...

2024年世界职业院校技能大赛:全面升级的国际化职业技能竞赛

近日,中华人民共和国教育部发布了《2024年世界职业院校技能大赛实施方案》,宣布从2024年起将全国职业院校技能大赛升级为世界职业院校技能大赛。这一重大决策不仅标志着我国职业教育竞赛平台的全面国际化,更彰显了中国在全球职业教育领域的引领作用和战略眼光&#xff0c;具体内…...

票据的采集,更新业务 todo 抽空迁移并废弃掉

采集过程 用户校验 参数校验部分 代码号码开票日期校验码(普票或电票必须)金额 是否有id&#xff0c;有id说明已存在&#xff0c;则应该是更新(该用更新接口)如果能查到&#xff0c;说明重复采集了查不到&#xff0c;新增存库...

居家办公网络优化指南:从Wi-Fi原理到实战部署

1. 居家隔离如何压垮了我们的家庭Wi-Fi网络如果你在2020年初也经历过居家办公或学习&#xff0c;大概率会对某个场景记忆犹新&#xff1a;视频会议卡成PPT、在线课程频繁掉线、追剧时那个转不完的缓冲圈。这不是你一个人的问题&#xff0c;而是全球无数家庭网络在特定时期承受的…...

如何快速掌握91160-cli:面向新手的医院全自动挂号完整指南

如何快速掌握91160-cli&#xff1a;面向新手的医院全自动挂号完整指南 【免费下载链接】91160-cli 健康160全自动挂号脚本&#xff0c;捡漏神器 项目地址: https://gitcode.com/gh_mirrors/91/91160-cli 还在为医院挂号难而烦恼吗&#xff1f;91160-cli是一款专为医疗预…...

芯片设计中的责任边界:从工程师素养到系统性流程构建

1. 从桥梁垮塌到芯片失效&#xff1a;工程师的责任边界在哪里&#xff1f;每次看到新闻里报道桥梁垮塌、大楼倾斜或者某个关键设备在运行中突然失效&#xff0c;我心里总会咯噔一下。作为一个在电子设计自动化&#xff08;EDA&#xff09;和半导体行业摸爬滚打了十几年的工程师…...

3分钟掌握跨平台鼠标连点器:免费开源自动化工具快速上手指南

3分钟掌握跨平台鼠标连点器&#xff1a;免费开源自动化工具快速上手指南 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#…...

STM32实战:手把手教你用Cubemx配置交流充电桩的CP信号检测(附代码)

STM32实战&#xff1a;从零构建充电桩CP信号检测系统 充电桩作为新能源汽车基础设施的核心组件&#xff0c;其通信协议的可靠性直接关系到充电安全。在实际工程中&#xff0c;CP&#xff08;Control Pilot&#xff09;信号的检测往往是开发者的第一个技术拦路虎。我曾在一个海外…...

UE4SS终极指南:5步掌握虚幻引擎游戏修改与脚本开发

UE4SS终极指南&#xff1a;5步掌握虚幻引擎游戏修改与脚本开发 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …...

如何通过命名规范降低代码维护成本:7个命名技巧提升长期项目质量

如何通过命名规范降低代码维护成本&#xff1a;7个命名技巧提升长期项目质量 【免费下载链接】naming-cheatsheet Comprehensive language-agnostic guidelines on variables naming. Home of the A/HC/LC pattern. 项目地址: https://gitcode.com/gh_mirrors/na/naming-chea…...

63岁黄仁勋再添博士头衔、英特尔CEO为其披袍,最新演讲刷屏:人类编写软件、计算机执行指令的范式已终结!

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 日前&#xff0c;在卡内基梅隆大学&#xff08;CMU&#xff09;的 2026 届毕业典礼上&#xff0c;英伟达 CEO 黄仁勋的头衔再加一&#xff0c;最新获得 CMU 科学与技术荣誉博士学位&#xff0c;而这也是…...

别再折腾wgrib了!用Python的xarray+cfgrib在Windows上优雅读取GRIB气象数据

告别命令行混乱&#xff1a;用Python生态在Windows上高效处理GRIB气象数据 气象数据分析工作中&#xff0c;GRIB格式文件一直是让人又爱又恨的存在。这种专为网格化气象数据设计的二进制格式&#xff0c;虽然存储效率高、兼容性强&#xff0c;但处理起来却常常让初学者望而生畏…...