Qt项目学习-20240617

Qt项目学习

1.0 文件构建

image-20240616175753299

image-20240616175816345

1.1 预处理命令

C++预处理命令是编译过程中的第一步,发生在编译器进行实际编译之前。预处理器(preprocessor)执行这些命令,它们不是C++语言的一部分,但对源代码的编译过程至关重要。以下是一些常见的C++预处理命令:

  1. #define

    • 用于定义宏。可以定义常量、条件编译块等。
    • 例如:#define PI 3.14159
  2. #undef

    • 用于取消之前使用#define定义的宏。
  3. #ifdef#ifndef

    • #ifdef用于检查是否已经定义了某个宏,如果定义了,则编译下面的代码块。
    • #ifndef#ifdef相反,如果未定义某个宏,则编译下面的代码块。
  4. #endif

    • 结束一个条件编译块,通常与#ifdef#ifndef#if#if defined()配对使用。
  5. #else

    • #ifdef#ifndef#if配合使用,表示如果条件不满足时编译的代码块。
  6. #elif

    • 相当于else if,用于在多个条件之间进行选择。
  7. #if#elif#ifndef

    • #if用于根据条件编译代码块,条件可以是宏定义检查或常量表达式。
    • #elifelse if的缩写,用于在多个条件之间进行选择。
  8. #include

    • 用于包含头文件。可以是系统头文件(用尖括号< >)或用户头文件(用双引号" ")。
    • 例如:#include <iostream>#include "myheader.h"
  9. #error

    • 用于在编译时生成错误信息。
  10. #pragma

    • 用于向编译器发出特殊的指令或警告。
  11. #line

    • 用于改变编译器报告的当前行号和/或文件名。
  12. #undef#define 可以一起使用来控制宏的使用,例如在头文件的开头取消宏定义,然后在文件的末尾重新定义它,以避免在不同文件中重复定义相同的宏。

预处理器的这些命令对于控制编译过程非常重要,它们允许开发者根据不同的条件编译不同的代码块,包含必要的头文件,以及定义和使用宏来简化代码。

1.2 空项目下面的几个文件中提到的重点

ui定义的指针指向一个对象

提问?qt空项目里面定义了一个私有指针变量ui,在cpp文件里面又被创建了一个对象,指针变量可以做对象使用吗,我理解的对吗

在Qt框架中,ui是一个指向用户界面类的指针,这个类通常由Qt Designer生成。这个指针变量不是直接用作对象,而是用于访问用户界面类的对象。以下是详细解释:

  1. 头文件中的指针声明
    .h文件中,MainWindow类声明了一个私有成员变量ui,类型为Ui::MainWindow *。这个声明只是告诉编译器MainWindow类将包含一个指向Ui::MainWindow类型的指针。

    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    };
    
  2. 实现文件中的构造函数
    .cpp文件中,MainWindow的构造函数通常会使用new关键字来创建Ui::MainWindow类的一个实例,并将其地址赋给ui指针。

    MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
  3. 指针的使用
    ui指针用于访问和操作用户界面元素。例如,如果你有一个按钮在Qt Designer中定义为pushButton,你可以通过ui->pushButton来访问这个按钮并进行操作。

  4. 析构函数
    MainWindow的析构函数中,你会使用delete ui;来释放ui指针指向的内存。

    MainWindow::~MainWindow()
    {
        delete ui;
    }
    

所以,你的理解是正确的,ui指针变量本身不是对象,但它指向了一个对象。这个对象包含了用户界面的所有元素和布局,你可以通过ui指针来访问和操作这些元素。这种设计模式允许你在运行时动态地创建和销毁用户界面,同时保持代码的组织性和可维护性。

image-20240617000957132

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

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

相关文章

强大的视角:介绍 MinIO 企业对象存储可观察性

可观测性革命推动了计算、安全、基础设施和可审计性方面的巨大进步。企业可观测性提供对云原生系统的全面和精细的可见性&#xff0c;以更快地识别和解决问题。遥测数据&#xff08;指标、日志、跟踪、运行状况检查&#xff09;可以实时显示和关联&#xff0c;从而提供从最高管…

一季度直播6000场,同比增长60%,遥望科技透露重要信息

6月17日&#xff0c;经由深圳证券交易所许可&#xff0c;遥望科技&#xff08;股票代码&#xff1a;002291&#xff09;正式对《年报问询函》进行公开回复&#xff0c;就经营的多个维度做出解释和回应。 在回复中&#xff0c;遥望科技预测2024年毛利率为14.4%&#xff0c;相比…

web系统数据库敏感数据处理

一、前言 web系统数据库中保存的公民信息不允许明文存储&#xff0c;比如手机号&#xff0c;身份证号&#xff0c;收货地址等。 二、处理方式 数据库中密文存储&#xff0c;web通过注解的方式对数据加解密处理&#xff0c;下面是处理方法 1、编写接口 public interface E…

高考志愿填报,是选好专业,还是选好学校?过来人给你说说

分数限制下&#xff0c;选好专业还是选好学校&#xff1f; 到底是先选专业还是先选学校&#xff0c;是让考生及家长一直拿不准、辨不清的问题&#xff0c;是优先考虑学校还是专业&#xff0c;上了好学校&#xff0c;专业不喜欢就业前景不理想&#xff0c;怎么办&#xff1f;为…

【二】【QT开发应用】QMake和CMake介绍,GN,QT三个窗口类的区别,QMainWindow, QWidget,QDialog

QMake和CMake介绍 qmake&#xff1a;qt独有的代码构建工具, 是一种简洁的构建工具&#xff0c;主要用于生成 Qt 项目的跨平台编译配置文件&#xff0c;语法简单&#xff0c;适合小型和中型项目。 cmake&#xff1a;C通用的代码构建工具&#xff0c;绝大部分C开源项目都使用cm…

【Ubuntu服务器】Ubuntu服务器用户添加及samba用户配置

前言 本文章描述ubuutu服务器上用户添加方式、sudo权限配置及samba用户配置 用户添加 用户添加 该操作是需要 root账户 或者 有sudo权限的普通账户 操作。 例如&#xff0c;添加名为test的用户。 rootanon:~# adduser test Adding user test ... Adding new group test (1…

文心一言 VS 讯飞星火 VS chatgpt (284)-- 算法导论21.2 2题

二、对定理 21.1 的整体证明进行改造&#xff0c;得到使用链表表示和加权合并启发式策略下的 MAKE-SET 和 FIND-SET 的摊还时间上界为 O(1)&#xff0c;以及 UNION 的摊还时间上界为 O(lgn)。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在Go语言中实现使用链…

二进制数转字符串

题目链接 二进制数转字符串 题目描述 注意点 32位包括输出中的 “0.” 这两位题目保证输入用例的小数位数最多只有 6 位 解答思路 将小数转为二进制的思路是将小数乘2&#xff0c;如果整数部分为1&#xff0c;则说明第i位是1&#xff08;第i位则乘了2的几次方&#xff09;…

Linux UFW防火墙设置、案例教程及注意事项

背景 远程连接服务器时&#xff0c;发现SSH远程登录服务器失败&#xff0c;但是又可以Ping通&#xff0c;故服务器的是开启的。 sudo systemctl status sshd查看sshd的状态发现其是active&#xff0c;所以为什么一直SSH失败呢&#xff1f; 最后知道是有人启动了防火墙&#x…

今年的618,似乎很平淡!

电商平台取消预售制度的第一个大促&#xff0c;快递业表现如何&#xff1f; 今年的618大促与往年有些不同&#xff0c;自4月起&#xff0c;天猫、京东、快手等主流平台相继官宣取消预售&#xff0c;打出“现货开卖”标签&#xff0c;这意味着消费者不用再被“烧脑”的优惠计算…

AI绘画-Stable Diffusion三次元人物模型训练(炼丹)教程,你也可以定制你的三上youya老师!

大家好&#xff0c;我是设计师阿威 &#xff08;Stable diffusion生成的三上youya老师&#xff09; 用AI进行画出不同人物&#xff0c;我们需要训练自己Lora模型。除了训练二次元人物之外&#xff0c;也常常要训练三次元人物。 比如福利姬老师可以训练自己然后穿上各种美美的…

使用搜索引擎--下载压缩软件

百度搜索必应 或者 bing 必应搜索 解压软件下载 前面的都是广告&#xff0c;不能下载 找到www的这种官网 点到下载专区&#xff0c;下载对应系统的压缩包 还有7zip也可以 对应下载就行 下载wps

轻松办公新神器!自动粘贴文本,一键复制固定号码,让您的工作效率翻倍提升!

在信息爆炸的时代&#xff0c;无论是工作还是生活&#xff0c;我们都需要处理大量的文本和号码。但是&#xff0c;手动复制粘贴的过程往往繁琐而耗时&#xff0c;大大降低了我们的工作效率。有没有一种方法能够让我们轻松复制粘贴&#xff0c;从此告别繁琐操作呢&#xff1f;答…

用户上下文打通与Feign的调用

在前几篇中已经将微信&#xff0c;网关与鉴权微服务全部打通&#xff0c;这次我们进行用户上下文打通&#xff0c;与微服务之间的调用。 用户上下文打通&#xff1a; 首先先思考一下&#xff0c;当我们成功登录的时候&#xff0c;网关会获取到当前用户相关的信息&#xff0c;…

IEEE754、linear11、linear16浮点数应用原理

IEEE754、linear11、linear16浮点数应用原理 1 浮点数应用1.1 IEEE754 浮点数标准1.2 PMBUS浮点数格式 2 浮点数原理2.1 IEEE754 浮点数解析2.2 PMBUS浮点数解析 3 浮点数代码应用3.1 IEEE754 浮点数应用3.1.1 将浮点变量赋值&#xff0c;直接打印整型&#xff08;32位&#xf…

Python兴趣编程百例:手把手带你开发一个图片转字符图的小工具

在数字世界的无尽探索中&#xff0c;我们时常被那些看似平凡的技术所启发&#xff0c;它们如同星辰般点缀着我们的创意天空。今天&#xff0c;我突发奇想&#xff0c;想要用Python开发一个将图片转化为字符画的小工具。这不仅是一次技术的实践&#xff0c;更是一场艺术与科技的…

STM32学习笔记(三)--EXTI外部中断详解

&#xff08;1&#xff09;配置步骤1.配置RCC 打开外设时钟2.配置GPIO 选择端口输入模式3.配置AFIO 选择要用的一路GPIO 连接至EXTI 4.配置EXTI 选择边沿触发方式 上升沿 下降沿 双边沿 选择触发响应方式 中断响应 事件响应 5.配置NVIC 选择一个合适的优先…

乡村养老服务管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;医疗人员管理&#xff0c;乡村志愿者管理&#xff0c;文娱活动管理&#xff0c;活动报名管理&#xff0c;医疗保健管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;文娱活…

运维技术栈总结

文章目录 Linux CommandBasecd/lschmod/chown/chgrpvi/vimscptarsudf Installrpmyumdeb/apt Filtertailgrepawkfindnetstatechotelnetwhereistouch/mkdirgzip/rar/tar Statistics Linux MonitorCPUtophtopsar Memoryfreevmstat I/Oiostatpidstatiotop Networknetstatiftoptcpdu…

Azure创建虚拟机

Azure创建虚拟机 一、创建步骤(1)登录到Azure portal(2)启动新实例(3)填写必要信息选择系统镜像(4)选择实例类型(5)配置管理员帐户和入站端口规则(6) 磁盘:保持默认(7) 网络:保持默认(8) 管理:保持默认(9) Monitoring:Boot diagnostics选择Disable(10) 最后直接点击查看 + …