【Qt】Qt Hello World 程序

文章目录

  • 1、Qt Hello World 程序
      • 1.1 使用按钮实现
        • 1.1.1 使用可视化方式实现
      • 1.1.2 纯代码方式实现
    • label创建堆(内存泄漏)或者栈问题
    • Qt基础类(Qstring、Qvector、Qlist)
    • 乱码问题
    • 零散知识

1、Qt Hello World 程序

1.1 使用按钮实现

1.1.1 使用可视化方式实现

双击点开widget.ui
在这里插入图片描述

将Label拖拽到面板上,之后就出现了文本框,就可以将要写的内容写进文本框
在这里插入图片描述

在这里插入图片描述

1.1.2 纯代码方式实现

通常将构造界面的代码放到构造函数当中Widget/MianWindow的构造函数当中。

#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);//最好加上this//QLabel Label;label->setText("hello world");//这里使用Qstring("")也是可以的,上面是进行了隐式转换//显示文本
}
Widget::~Widget()
{delete ui;
}

label创建堆(内存泄漏)或者栈问题

上面代码当中创建在堆上,但是为什么没有释放空间,而不会造成内存泄漏,原因是label对象会在合适的时候进行析构释放,虽然没有手动释放但是的确是释放了。
当中涉及到了对象树(DOM),本质上就是一个树形结构(N叉树),通过树形结构把界面上的各种元素组织起来。
使用对象树,把内容组织起来,最主要的目的就是为了在合适的时机(窗口关闭时)把这些对象统一进行进行释放。
所以此处使用堆来创建对象也是有原因的,就是为了把对象的生命周期交给Qt的对象树统一处理。
如果要是换成在栈上创建就可能存在"提前释放"的问题。

在这里插入图片描述
从上面的图片可以看出他的窗口上并没有显示字符串,原因是在它随着构造函数的结束就进行了销毁。

this: QLabel* label=new QLabel(this);指向当前类的对象。在这种情况下,new QLabel(this) 表示创建一个新的 QLabel 对象,并将当前对象作为父对象传递给 QLabel 构造函数。这样做的目的是将 QLabel 设置为当前对象的子对象,从而使 QLabel 跟随当前对象的生命周期。当当前对象被销毁时,与之相关联的 QLabel 也会被销毁,从而方便进行内存管理。

在这里要证明一下,析构函数是能帮我们自动销毁的,

//mylabel.hpp
#ifndef MYLABEL_H
#define MYLABEL_H#include <QWidget>
#include<QLabel>class Mylabel : public QLabel
{Q_OBJECT
public://加上QWidget* parent,才能确保自己的对象加在了对象树上Mylabel(QWidget* parent);~Mylabel();
};#endif // MYLABEL_H
//mylabel.cpp
#include "mylabel.h"
#include<iostream>
#include<QDebug>
Mylabel::Mylabel(QWidget* parent):QLabel(parent)
{}Mylabel::~Mylabel()
{qDebug()<<"MyLabel 被销毁";
}
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "mylabel.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);Mylabel* label=new Mylabel(this);label->setText("hello world");
}Widget::~Widget()
{delete ui;
}

Qt基础类(Qstring、Qvector、Qlist)

Qt有他自己的一套轮子,但是也可以使用c++当中的类,更建议使用它自己造的轮子,Qstring对于字符编码进行了处理,而std::string就是什么都没干。

乱码问题

在Qt当中使用中文会出现乱码的问题

在这里插入图片描述

先简单的了解一下标识汉字的字符集,常用的就两个
GBK(中国大陆)使用两个字节表示一个汉字,windows简体中文版就是GBK字符集
UFT-8/uft8 变长编码,表示一个符号,使用的字节数有变化2-4,在uft8当中,一个汉字一般是三个字节。Linux当中默认的就是uft8

出现乱码的问题就是编码方式不匹配

所以Qt当中有Qstring,可以帮助我们自动的处理编码模式。
Qt当中还提供了一个工具就是qDebug,可以很好的帮助我们打印日志,更好的处理字符编码
qDebug()当中封装了QDebug这个对象,qDebug()他是一个宏,就可以把它当作cout使用,并且他还是自动换行。打印日志是可以统一关闭的。
在这里插入图片描述

零散知识

在Qt当中可以使用F4进行切换互相对应的头文件和.cpp文件,
在vim当中使用:A进行切换
在Qt当中在声明文件当中使用Alt+Enter会在定义得文件当中自动出现他的框架

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

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

相关文章

Swin Transformer 浅析

Swin Transformer 浅析 文章目录 Swin Transformer 浅析引言Swin Transformer 的网络结构W-MSA 窗口多头注意力机制SW-MSA 滑动窗口多头注意力机制Patch Merging 图块合并 引言 因为ViT无法实现CNN中的层次化构建以及局部信息&#xff0c;由此微软团队提出了Swin Transformer来…

C语言(二维数组)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

15.7 2011年42题真题讲解

2&#xff0c;4&#xff0c;6&#xff0c;8&#xff0c;11&#xff0c;13&#xff0c;15&#xff0c;17&#xff0c;19&#xff0c;20 可以推出题目的一个隐含条件&#xff1a;偶数个元素的中位数是靠前的那一个 应试技巧&#xff1a;如果实在想不出高效的算法&#xff0c;那…

Linux下跟踪某个进程的内核处理时延消耗情况

1.利用系统自动的trace功能&#xff0c;编辑如下脚本&#xff0c;vim trace_process.sh #!/bin/sh cd /sys/kernel/debug/tracing/ #清空原有跟踪信息 echo > trace echo nop > current_tracer #设置要跟踪的进程 echo "pid281255" echo 281255 > set_ftra…

基于springboot+vue+Mysql的房产销售平台

开发语言&#xff1a;Java框架&#xff1a;springcloudJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a…

【详细讲解CentOS常用的命令】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

SQLite FTS5 扩展(三十)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite的知名用户(二十九) 下一篇&#xff1a;SQLite—系列文章目录 1. FTS5概述 FTS5 是一个 SQLite 虚拟表模块&#xff0c;它为数据库应用程序提供全文搜索功能。在最基本的形式中&#xff0c; 全文搜索引擎允许用户有…

Dinov2 + Faiss 图片检索

MetaAI 通过开源 DINOv2&#xff0c;在计算机视觉领域取得了一个显着的里程碑&#xff0c;这是一个在包含1.42 亿张图像的令人印象深刻的数据集上训练的模型。产生适用于图像级视觉任务&#xff08;图像分类、实例检索、视频理解&#xff09;以及像素级视觉任务&#xff08;深度…

【leetcode面试经典150题】57. 环形链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

服务的状态

1、服务的状态 有状态的服务&#xff1a; 即服务器保存服务有关的个性化参数。 比如客户登陆后&#xff0c;将 客户的权限信息 保存在服务器&#xff0c;每次拿到客户请求后&#xff0c;服务器从自身的数据存储中取出客户角色信息。判断是否响应客户请求。 无状态的服务&…

c++string简单使用

sting下标从0开始 子字符串 substr(pos, len) 得到从 p o s pos pos开始长 l e n len len的字符串。 string s "bcdefg";cout<<s.substr(2, 4); // out: defg插入 insert(pos, str_t) 在字符串 p o s pos pos前插入字符串str_t。 string s "bcdefg…

vivado 使用 JTAG-to-AXI Master 调试核进行硬件系统通信

使用 JTAG-to-AXI Master 调试核进行硬件系统通信 JTAG-to-AXI Master 调试核为可自定义核 &#xff0c; 可在运行时生成 AXI 传输事务并驱动 FPGA 内部的 AXI 信号。该核支持所 有存储器映射型 AXI 接口和 AXI4-Lite 接口 &#xff0c; 并且可支持位宽为 32 或 64 …

免费的数据恢复软件有哪些?推荐10款免费的数据恢复软件!

通过使用功能强大的免费和最好的数据恢复软件&#xff0c;您可以取消删除重要文件和文档。丢失文件是每个人在许多情况下面临的常见问题&#xff0c;这些数据恢复程序可以充当完美的救星。 我们编制了 2024年的最佳软件列表。这些工具易于使用&#xff0c;您可以通过如何在 PC…

GBase 8s 中的关键字(表达式)

GBase 8s中有一些特殊的关键字&#xff0c;比如rowid,rownum这样的&#xff0c;可以直接在查询语句中直接使用&#xff0c;表示特定的含义。 这种类型的关键字&#xff0c;在使用到表上时需要特别小心&#xff0c;否则可能得非预想要的结果。 如&#xff1a; select * from ta…

Spring Boot 目前还是最先进的吗?

当谈到现代Java开发框架时&#xff0c;Spring Boot一直处于领先地位。它目前不仅是最先进的&#xff0c;而且在Java生态系统中拥有着巨大的影响力。 1. 什么是Spring Boot&#xff1f; Spring Boot是由Spring团队开发的开源框架&#xff0c;旨在简化基于Spring的应用程序的开…

机器学习之时序差分学习(Temporal Different Learning)

时序差分学习(Temporal Difference Learning)是一种强化学习算法,常用于解决序列决策问题。它结合了动态规划和蒙特卡洛方法的优点,在未来奖励和当前估计之间进行自举式更新。 该算法的核心思想是通过不断地估计状态值或动作值的更新来学习。具体来说,它通过比较当前状态…

#LLM入门|AI测试# 3.6_创建测试集,人工/LLM评估

评估是确保语言模型&#xff08;LLM&#xff09;问答系统质量的重要步骤&#xff0c;它有助于检测模型在不同文档上的表现&#xff0c;发现不足之处&#xff0c;并通过比较不同模型选择最优方案。定期评估还能监测模型性能是否下降。 评估目的包括确认LLM是否满足验收标准&…

接收区块链的CCF会议--ICSOC 2024 截止7.24

ICSOC是CCF B类会议&#xff08;软件工程/系统软件/程序设计语言&#xff09; 2023年长文短文录用率22% Focus Area 4: Emerging Technologies Quantum Service Computing Digital Twins 3D Printing/additive Manufacturing Techniques Blockchain Robotic Process Autom…

N元语言模型

第1关&#xff1a;预测句子概率 任务描述 本关任务&#xff1a;利用二元语言模型计算句子的概率 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.条件概率计算方式。 2.二元语言模型相关知识。 条件概率计算公式 条件概率是指事件A在事件B发生的条件下发…

代码随想录-哈希表 | 242 有效的字母异位词

代码随想录-哈希表 | 242 有效的字母异位词 LeetCode 242-有效的字母异位词解题思路代码复杂度难点总结 LeetCode 242-有效的字母异位词 题目链接 题目描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每…