Qt开发教程

news/2024/4/26 17:33:53/文章来源:https://blog.csdn.net/qq_33867131/article/details/129118051

对初学Qt的朋友而言,首先要做的是熟悉Qt的开发环境,为了让读者把精力集中到开发技术的学习上,本文只介绍Qt Creator这种官方提供的集成开发环境(IDE)进行开发的过程。

二|认识Qt Creator开发环境
初见
不了解Qt Creator的朋友可以自行检索或到Qt官网了解。这里只需要知道,我们将使用这个工具完成接下来的开发就行了。

Qt Creator的下载和安装
1、官方通道下载速度比较着急,最好使用国内镜像源。找不到镜像源的额朋友可以参考我这篇文章:https://blog.csdn.net/qq_33904382/article/details/108632625
通过这篇文章介绍的告诉下载链接,可以很快下载完成,节省不必要的等待时间。

2、安装全程跟随安装引导点点点即可,略感困难的朋友可以参考我这篇文章:https://blog.csdn.net/qq_33904382/article/details/108643419中的图例,对照着完成Qt的安装。

新建工程
在Qt Creator中建立工程文件和在其他开发环境中类似,这里可以参考这篇文章:https://blog.csdn.net/qq_33904382/article/details/108743493建立一个名为Notepad的工程。

注意我们在Kits这个步骤和链接文章中不同,我们在这里选择的编译工具是MinGW 32bit,这和编译以及打包发布有较大关联。为了避免不必要的麻烦,建议初学的朋友和本文保持一致。

查看工程内容
建立工程后,会自动打开,Qt Creator切换到Edit界面:

上图显示了工程中自动生成了一些文件,单击左下角的绿色三角形图标,这个工程将进行编译、链接(编译链接的进度将被实时显示在右下角的方条中),然后运行。在屏幕上出现一个空白的窗口:

我们将对工程中的这些文件进行编辑,从而把窗口内容打磨成我们想要的样子。
所以,首先要认识一下工程中的这些文件:

一个工程文件:Notepad.pro
1
这个文件和工程为一些配置有关,在本文的开发过程中不会用到。我们将在打包发布的阶段对它进行必要的编辑。

一个主文件:main.cpp
1
这个文件和进行纯c/c++的代码编写时有所不同。为了削弱朋友们的陌生感,本文将逐行地介绍一下这个文件。但仅供了解,不必深究。

主c文件内容:

#include “notepad.h”
#include

int main(int argc, char *argv[])
{
QApplication EditorApp(argc, argv);
Notepad Editor;
Editor.show();

return EditorApp.exec();

}
1
2
3
4
5
6
7
8
9
10
11
逐行解析:

最开始的两行用于引用notepad.h和QApplication这两个头文件。QApplication是Qt库的一个头文件,所有的Qt类都有对应的头文件。

#include “notepad.h”
#include
1
2
这行是定义了主函数。和纯c/c++开发一样,使用Qt开发环境编写的整个程序也是从这个函数开始执行。

int main(int argc, char *argv[])
1
这一行使用主函数的参数,创建了一个EditorApp对象。这是Qt程序的主函数中的固定操作,不必细究。

QApplication EditorApp(argc, argv);
1
下面这行声明了一个在mainwindow.h和mainwindow.cpp中定义的那个Notepad类的对象Editor,我们编辑的主要对象。

Notepad Editor;
1
下面这行代码让我们编写的这个窗口显示在屏幕上。

Editor.show();
1
最后一句代码让程序进入Qt的事件循环,也就是窗口一直运行着,等待我们的各种操作,并根据我们在代码中的设定做出响应。

return EditorApp.exec();
1
逐行解析结束

一个后缀为ui的文件:mainwindow.ui
1
除了使用代码编辑,我们还可以通过这个文件对窗口的界面进行设计和改动。
而且借助开发环境中集成的Qt Designer,我们可以使用鼠标进行可视化编辑。双击这个ui文件即可打开Qt Designer界面,具体在第四部分熟悉Qt designer和窗体UI编辑方法中介绍。

三|了解Qt的混合开发模式
有的初学者认为应该使用纯代码编辑窗体,诚然,这是可以的,但确实不推荐。

因为窗体的大小通常可以变化,所以想要保持一定风格的界面,窗体上的按钮等控件的位置也就应该随着窗体的变化。这样就需要许多与界面相关的代码。

所以实际上,我们通常用Qt designer这个工具对窗体的界面进行可视化的编辑,代码部分只用来完成槽函数和对事件的响应。

这也就是所谓的Qt的混合开发模式。

四|熟悉Qt designer和窗体UI编辑方法

鼠标双击工程目录中的mainwindow.ui文件,Qt Creator会自动转到Qt designer,如下图所示:

中间白色背景区域就是窗体显示区域,灰色的方框就是窗体mainwindow,因为我们还没有为它添加控件,此时上面时空白的。

比较一|任务导向中的效果图,我们先准备在顶部给它加上一排工具栏。

1、在窗体上单击右键
2、在弹出的选项框中选择add toolbar(添加工具栏),单击左键
1
2

可以看到窗体顶部多了窄窄的一栏,右上角的元素框(上图右边那个红色圈中)中也显示出窗体上有一个名为toolbar的控件。这个名字是可以修改的,我们现在不管这些细节。

当然,这和我们想要的工具栏还是不同,现在我们让它看上去好一点,具体来说有两个步骤:

1、为工具栏添加一些action
2、为action设置图标,让它更好看一些
1
2
第二个步骤我们将在六|资源文件和自定义图标中说明,这一部分我们先考虑怎么让工具栏有一些像按键的东西,并且让这些“按键”被按下去后发生一些我们设想的事情。

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

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

相关文章

Prometheus集群分布式架构浅析

集群行为是一种常见于自然界中鱼群、鸟群、蜂群等低等群居生物的集体行为,受此启发形成了无人机集群的概念。无人机集群不是多无人机间的简单编队,而是通过必要的控制策略使之产生集群协同效应,从而具备执行复杂多变、危险任务的能力。目前无…

如何快速、全面、深入地掌握一门编程语言

思考路线 如何快速? 什么样的Demo才能让人觉得你掌握了它? 空 判断:构造一个可以判断所有空的 is_empty 函数 for 循环:i 和 集合迭代两种 时间获取:年/月/日 时分秒 时间戳与时间格式互转 休眠时间函数 字符串处理…

Word控件Spire.Doc 【Table】教程(17):如何在 C#、VB.NET 中删除 Word 表格中的行和列

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

PCB设计中降低噪声与电磁干扰的24个窍门

电子设备的灵敏度越来越高,这要求设备的抗干扰能力也越来越强,因此PCB设计也变得更加困难,如何提高PCB的抗干扰能力成为众多工程师们关注的重点问题之一。本文将介绍PCB设计中降低噪声与电磁干扰的一些小窍门。 下面是经过多年设计总结出来的…

大数据处理学习笔记1.3 使用Scala集成开发环境

文章目录零、本讲学习目标一、搭建Scala的IntelliJ IDEA开发环境(一)启动IDEA(二)安装Scala插件(三)配置IDEA使用的默认JDK(四)创建Scala项目1、创建Scala项目 - ScalaDemo2、创建Sc…

linux高级命令之死锁

死锁学习目标能够知道产生死锁的原因1. 死锁的概念死锁: 一直等待对方释放锁的情景就是死锁为了更好的理解死锁,来看一个现实生活的效果图:说明:现实社会中,男女双方一直等待对方先道歉的这种行为就好比是死锁。死锁的结果会造成应用程序的停止响应&…

【vue】elemente-ui table toggleRowSelection 默认选择无效[已解决]

项目场景: 点击按钮,弹出一个弹出框,内部出现一个table表,表内数据是动态获取,同时得勾选上几个table表的数据,类似以下的图 问题描述 点击按钮显示弹出框,加载table中的数据,默…

【机器学习】Adaboost

1.什么是Adaboost AdaBoost(adapt boost),自适应推进算法,属于Boosting方法的学习机制。是一种通过改变训练样本权重来学习多个弱分类器并进行线性结合的过程。它的自适应在于:被前一个基本分类器误分类的样本的权值会…

springboot整合Chat Generative Pre-trained Transformer

什么是Chat Generative Pre-trained Transformer Chat Generative Pre-trained Transformer,是以人工智能驱动的聊天机器人程序 ,已经更新多个版本,很多大厂也都在接入其API。 整合难度 难度一颗星,基本上就是给官方API发请求&am…

在VMware Workstation中配置固定IP、在VMware Fusion中配置固定IP

1、在VMware Workstation中配置固定IP 配置固定IP需要2个大步骤: 1.在VMware Workstation(或Fusion)中配置IP地址网关和网段(IP地址的范围) 首先让我们,先进行第一步,跟随图片进行操作 现在进…

基于某业务单登陆场景并发测试实战

文章目录1 测试目的2 测试目标和测试对象3 名词解释4 测试说明5 测试环境和工具5.1 测试工具5.2 测试环境5.3 人力计划6 测试用例6.1 方案设计6.2 接口地址6.3 接口参数6.3.1 header参数6.3.2 请求参数7 脚本设计8 监控数据8.1 虚拟用户并发情况8.2 事务响应时间8.3 每秒点击次…

面试攻略,Java 基础面试 100 问(十二)

如何将字符串转换为基本数据类型? 调用基本数据类型对应的包装类中的方法 parseXXX(String)或 valueOf(String)即可返回相应基本类型; 如何将基本数据类型转换为字符串? 一种方法是将基本数据类型与空字符串(””)连…

微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI RestClient

分布式搜索引擎01-- elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容例如:在GitHub搜索代码…

半年前学习了性能测试涨薪5k, 经验+技术积累+坚持很重要

做测试一年多来,虽然平时的工作都能很好的完成,但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺,所以,在工作之余也做了一些测试方面的知识的补充。不足之处,还请大家多多交流,互相学习。现…

系列三、docker相关指令

一、docker指令 1.1、查看docker详细信息 docker info 1.2、查看docker版本 docker version 1.3、帮助命令 docker --help 二、images指令 2.1、查看本地仓库中有哪些镜像 docker images 2.2、下载新的镜像 # 语法 docker pull 镜像名:版本号# 案例 docker pull mysql…

Node.js安装配置及Angular CLI的安装

NodeJS的安装node.js官网下载地址: https://nodejs.org/en/download/在node.js的官网上面下载适合自己机型的,如果是Windows系统的话,建议下载对应的 Windows Installer (.msi) 。下载完成后,双击打开安装,安装路径最好自定义&…

12款适合小团队协作、任务管理和进度跟踪的在线任务管理的工具推荐?

国内外12款主流任务管理软件测评: 1.开发任务管理PingCode; 2.多合一项目任务管理Worktile;3.个人和小团队项目任务管理Notion; 4.企业任务管理平台SmartTask; 5.小团队任务管理Teambition;6.IT任务追踪管理Jira等。无论是做好工作任务管理还是个人任务管理,从来都不…

Flink-多流转换(Union、Connect、Join)

文章目录多流转换分流基本合流操作联合(Union)连接(Connect)基于时间的合流——双流联结(Join)窗口联结(Window Join)间隔联结(Interval Join)窗口同组联结&a…

Git复习

1. 引言 现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息: git c…

Vue3搭建记录

一、初始化项目:项目名称vue3-element-admin npm init vitelatest vue3-element-admin --template vue-ts 二、整合Element-Plus 1.本地安装Element Plus和图标组件 npm install element-plus npm install element-plus/icons-vue 2.全局注册组件 // main.ts imp…