C++客户端Qt开发——QT初识

二、QT初识

1.helloworld示例

①图形化的方式,在界面上创建出一个控件,显示helloworld

右侧通过树形结构,就会显示出当前界面上有哪些控件

此时.ui文件已发生变化

qmake就会在编译项目的时候,基于这个内容,生成一段C++代码,通过C++代码构建出界面内容(自动完成)

②用代码创建helloworld

默认会在(0,0)的位置

③对象树

本质上是一个树形结构(N叉树),通过树形结构把界面上的各种元素组织起来

②中的代码创建,是在堆上new出来的一块空间,当把对象改成在栈上创建,此时就可以看到运行起来的程序无法显示出helloworld,此时label对象随着构造函数的结束,就销毁了,所以应该把它交给对象树进行管理

Qt的对象树模型提供了一种方便的方式来管理对象的生命周期和组织对象的关系,特别适用于GUI编程和事件处理。

Qt的对象树模型是一种递归的结构,其中一个对象可以拥有多个子对象,而每个子对象又可以拥有自己的子对象,以此类推。

在对象树模型中,父对象的销毁会导致所有子对象的自动销毁当一个QObject对象被销毁时,它的所有子对象也会被递归地销毁。这种自动内存管理机制使得在Qt中不需要手动管理对象的生命周期,提高了代码的简洁性和可维护性。

④乱码问题

主要有两种方式表示汉字字符集

  • GBK(中国大陆)使用2个字节表示一个汉字,windows简体中文版,默认字符集就是GBK
  • UTF-8/utf8变长编码,表示一个符号,使用的字节数有变化,2~4个邹姐。但是在utf8中,一个汉字一般是3个字节,linux默认是utf8

如果字符本身就是utf8,但是终端是用GBK解析的,就会出现乱码

解决方式:qDebug()

QDebug是Qt中的类,又不会直接使用这个类

qDebug(),封装了QDebug对象,直接使用QDebug(),可以直接当做cout来使用

如果需要打印日志输出调试信息,优先使用qDebug

qDebug还有个好处是打印的调试日志,是可以统一进行关闭的

⑤实现helloworld

控件方式

代码方式

在widget.cpp中,使用QLineEdit

按钮方式

QT中的信号和槽机制:本质就是给按钮的点击操作关联上一个处理函数,当用户点击的时候,就会执行这个处理函数

使用connect函数,是QObhect这个类提供的静态函数,这个函数的作用就是“连接信号和槽”

connect参数

connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);

  • ui->pushButton访问到from file(ui文件)中创建的空间,确认谁发出的信号

在QT Designer中创建一个控件的时候,此时会给这个控件分配一个objectName属性,这个属性的值,要求是在界面中是唯一的,不能和别人重复

会自动生成一个,也可以手动修改成别的,qmake在预处理.ui文件的时候,就会根据这里的objectName的时候

  • &QPushButton::clicked,点击按钮的时候就会自动触发这个信号,能知道发出了什么信号
  • this,谁来处理这个信号
  • &Widget::handleClick具体怎么处理,需要实现handleClick函数
void Widget::handleClick()
{if(ui->pushButton->text() == QString("helloworld")){ui->pushButton->setText("hello qt");}else{ui->pushButton->setText("helloworld");}}

2.命名规范

①蛇形命名法(下划线)

student_count

②驼峰命名法

studentCount小驼峰(变量函数多用)

Studentcount大驼峰(类多用)

3.查询文档方式

①快捷键

注释:ctrl+/

运行:ctrl+R

编译:ctrl+B

字体缩放:ctrl+鼠标滚轮

查找:ctrl+F

整行移动:ctrl+shift+↑/↓

帮助文档:F1

自动对齐:ctrl+i

同名之间的.h和.cpp的切换:F4

生成函数声明的对应定义:alt+enter

②使用帮助文档

4.QT窗口坐标体系

坐标体系:以左上角为原点(0,0),x向右增加,y向下增加

给qt的某个控件设置位置,就需要指定坐标,对于这个控件来说,坐标系原点就是相对于父窗口/控件

使用move函数来设置按钮的位置,单位是像素

button->move(200,300);控件位置

this->move(200,300);窗口位置

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

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

相关文章

35.UART(通用异步收发传输器)-RS232(2)

(1)RS232接收模块visio框图: (2)接收模块Verilog代码编写: /* 常见波特率: 4800、9600、14400、115200 在系统时钟为50MHz时,对应计数为: (1/4800) * 10^9 /20 -1 10416 …

链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外

因为上一篇没对微服务代码很详细地说明,所以在此借花献佛,使用开源的微服务代码去说明如何去做链路追踪。 项目是开源项目,fork到github以及gitee中,然后拉取到本地 后端代码: https://gitee.com/jelex/mall-swarm.gi…

微软研究人员为电子表格应用开发了专用人工智能LLM

微软的 Copilot 生成式人工智能助手现已成为该公司许多软件应用程序的一部分。其中包括 Excel 电子表格应用程序,用户可以在其中输入文本提示来帮助处理某些选项。微软的一组研究人员一直在研究一种新的人工智能大型语言模型,这种模型是专门为 Excel、Go…

BiLSTM 实现股票多变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

算法题目整合

文章目录 121. 小红的区间翻转142. 两个字符串的最小 ASCII 删除总和143. 最长同值路径139.完美数140. 可爱串141. 好二叉树 121. 小红的区间翻转 小红拿到了两个长度为 n 的数组 a 和 b,她仅可以执行一次以下翻转操作:选择a数组中的一个区间[i, j]&…

SpringBoot集成MQTT实现交互服务通信

引言 本文是springboot集成mqtt的一个实战案例。 gitee代码库地址:源码地址 一、什么是MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe&…

教大模型学数学,总共分几步?

大模型那么聪明,为什么数学题总是做不对、做不会? 从答高考数学卷难及格到普通数字比大小出错,大模型总算让大家觉得并非“无所不能”。这一方面让普通人开心,毕竟讲到AI取代人类看起来为时尚早,而另一方面&#xff0…

Autosar RTE配置-Assembly和Delegation的使用-基于ETAS软件

文章目录 前言Assembly和Delegation的含义Delegation的使用Assembly的使用总结 前言 RTE中的Compostion内部的SWC之间的连接使用Assembly Connector进行连接。这样的连接一般都是一个SWC的Pport对应另一个SWC的Rport。而Autosar软件中往往不只一个Composition(一般可以以核的数…

Android Toast

Toast Toast是Android常用的简单控件,主要用来进行简短的信息提示,如图1所示。 图1 Toast效果图 Toast的基本用法很简单,不需要设置layout,只需要在程序中调用即可。Toast调用makeText()方法设置需要显示的界面、显示的内容、显…

【计算机网络】学习指南及导论

个人主页:【😊个人主页】 系列专栏:【❤️计算机网络】 文章目录 前言我们为什么要学计算机网络?计算机网络概述计算机网络的分类按交换技术分类按使用者分类按传输介质分类按覆盖网络分类按覆盖网络分类 局域网的连接方式有线连接…

Lua基础知识入门

1 基础知识 标识符:标识符的定义和 C语言相同:字母和下划线_ 开头, 下划线_ 大写字母一般是lua保留字, 如_VERSION 全局变量:默认情况下,变量总是认为是全局的,不需要申明,给一个变…

河南萌新联赛2024第(一)场:河南农业大学

A.造数 题目: 链接:https://ac.nowcoder.com/acm/contest/86639/A 思路: 签到题,特判如果n0,输出0,如果n1或2,输出1;while循环,首先如果n%2!0,那么s&…

基于Web的特产美食销售系统的设计与实现

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Spring Web MVC(常用的注解@RequestMapping,@RequestParam,@RequestBody等)

一、Spring MVC spring的启动类 启动类是看这个 SpringBootApplication 注解,而不是 类的名字 这个注解在哪,哪个类就是启动类 1.MVC思想 举例 二、Spring MVC mvc 是一种思想,而spring mvc是对mvc思想的一种实现。全称是 spring web mvc…

笔记 2 : 课本第 3 章开始,记录 arm 的汇编指令的格式

(13) 介绍 arm 中的第一个汇编指令的用法 mov : (14)立即数的概念: (15) 汇编中的移位写法: 举例 : (16) 学习一个新的指令 cmp &a…

【大型实战】企业网络实验(华为核心交换、ESXI7.0vmware虚拟机、DHCP中继、服务端网络及用户端网络配置)

需求 实验 vmware网络配置(企业内部一般为ESXI) 这样服务器虚拟机使用192.168.200.X网段才能与用户侧互通 vmware虚拟机配置(DHCP服务器网络配置) 打开网络管理页面 nmtui重置一下网络连接(重启网卡) …

ubuntu24.04 linux bcm94352hmb 无线网卡(带蓝牙功能)无法连接蓝牙设备的解决办法

ubuntu24.04 linux bcm94352hmb 无线网卡(带蓝牙功能)无法连接蓝牙设备的解决办法 问题描述 小本是自己换装的bcm94352hmb,现在跑不动黑苹果了,换装ubuntu,该网卡在黑苹果上和windows上都能正常工作,到了…

Go语言中的并发

简单介绍go中的并发编程. 涉及内容主要为goroutine, goroutine间的通信(主要是channel), 并发控制(等待、退出). 想查看更多与Go相关的内容, 可以查看我的Go编程栏目 Goroutine 语法 在一个函数调用前加上go即可, go func(). 语法很简单, 可以说是并发写起来最简单的程序语言…

Mongodb多键索引中索引边界的混合

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第93篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…

linux进程——概念理解与PCB

前言:本篇讲解Linux进程概念相关内容。 操作系统被称为计算机世界的哲学, 可以见得操作系统的知识并不好理解。 对于这篇进程概念的讲解, 博主认为, 如果没有一些前置知识的话,里面的有些概念并不好理解。 但是如果学习…