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_OBJECTpublic: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

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

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

相关文章

JavaScript-逻辑中断

学习目标&#xff1a; 掌握逻辑中断 学习内容&#xff1a; 语法逻辑运算符里的短路 语法&#xff1a; function fn(x, y) {x x || 0y y || 0console.log(x y)}fn(1, 2)fn()逻辑运算符里的短路&#xff1a; 短路&#xff1a;只存在于&&和||中&#xff0c;当满足一定…

Vue 前后端分离开发:懒人必备的API SDK

在前后端分离的项目中,前后端通过API进行通信和数据交换。随着项目规模的扩大,API的数量可能从几十个增加到几百个。为了简化API的编写和维护,我们可以利用JavaScript的特性,通过动态生成接口方法来实现懒人开发。本文将详细介绍如何统一接口调用方式、抽象和封装接口,并利…

C++项目——负载均衡在线OJ

前言 学习了这么久的C/C与Linux&#xff0c;终于到了做项目的时候&#xff0c;想想还是有点小激动&#xff0c;哈哈哈哈哈。我们的目标是做一个跟leetcode、牛客类似的在线OJ系统&#xff0c;功能阉割了一些&#xff0c;比如说登录、论坛、求职等等。主要实现了提交题目与判定…

旅游文化管理平台

摘 要 乡村振兴战略典型村落——战旗村&#xff0c;依靠自身优秀的资源迅猛发展。新冠肺炎疫情的影响下&#xff0c;我国旅游业受到巨大冲击。2020年在短暂缓冲后国内旅游业呈现缓慢恢复的态势。新型冠状病毒爆发&#xff0c;第三产业尤其是旅游业发展逐渐走向低靡&#xff0c…

go语言对接S3存储的SDK(支持minio和OSS)

背景 在某个项目中&#xff0c;客户要求支持S3协议的存储&#xff0c;因为之前的项目是go来开发的支持的oss和minio 。 但并不一定支持S3的协议&#xff0c;而且使用了二种SDK&#xff0c;感觉比较麻烦。 既然客户提出来了要求。那我们改一下就是了。 操作 引入 go语言中有对…

AI时代下的自动化代码审计工具

代码审计工具分享 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 这两年一直都在提“安全左移”&…

DAY8-力扣刷题

1.全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 通过对之前习题的了解&#xff0c;一看到该题就想到了用回溯法 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;回溯法 class Solu…

如何编写基本的Java程序

安装Java Development Kit&#xff08;JDK&#xff09;是开发Java应用程序的第一步。 1.下载JDK Java程序必须运行在JVM上&#xff0c;我们第一件事情就是安装JDK。 1.下载地址&#xff1a;Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#jdk…

10W+人都在看的年度技术精选、游戏行业安全、私域、AI实践指南报告整合,码住!

在网易工作了十多年&#xff0c;不说别的&#xff0c;小智在这里光学习就学习到很多干货&#xff0c;今天将这些干货内容统一分享给同仁&#xff01;真的是集齐精华&#xff0c;大家先点赞收藏关注&#x1f44d; 往年&#xff0c;基于网易数智在娱乐社交、游戏、泛零售、政务、…

二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

智慧物流:实现供应链的技术升级

智慧物流不仅是物流管理系统的智能化升级&#xff0c;更是以物联网、大数据分析等技术手段为基础的一种高效、智能的供应链解决方案。通过实时监控、数据分析和智能优化&#xff0c;智慧物流将传统物流的各个环节有效连接起来&#xff0c;实现信息流、资金流和物流的无缝对接。…

AMD模块的使用案例-基于普通htm

AMD模块的使用案例-基于普通html 实现过程结果 实现过程 AMD 是一种适用于浏览器环境的模块化规范&#xff0c;主要用于异步加载模块。RequireJS 是实现 AMD 的一个流行库。 ​ 使用案例&#xff1a; 文件目录&#xff1a; index.html&#xff0c;使用<script data-main&…

【每天学会一个渗透测试工具】AppScan安装及使用指南

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 https://www.hcl-software.com/appscan AppScan是一种综合型漏洞扫描工具&#xff0c;采用SaaS解决方案&#xff0c;它将所以…

打造完美启动页:关键策略与设计技巧

启动页&#xff08;Splash Screen&#xff09;设计是指在应用程序启动时&#xff0c;首先展示给用户的界面设计。这个界面通常在应用加载或初始化期间显示&#xff0c;其主要目的是为用户提供一个视觉缓冲&#xff0c;展示品牌标识&#xff0c;并减少用户在等待过程中的焦虑感。…

【锐捷】VSU环境下部署VAC

配置要求 1.两台核心交换机部署VSU&#xff0c;Domain ID为1&#xff0c;S1的Switch ID为1&#xff0c;优先级为150&#xff0c;设备描述为VSU-S1&#xff1b;S2的Switch ID为2&#xff0c;优先级为120&#xff0c;设备描述为VSU-S2&#xff1b;两台设备的G0/48口用于BFD双机检…

【Golang - 90天从新手到大师】Day06 - 数组

系列文章合集 Golang - 90天从新手到大师 数组是golang中最常用的一种数据结构,数组就是同一类型数据的有序集合 定义一个数组 格式: var name [n]type n为数组长度,n>0 且无法修改,type为数组的元素类型如: var a [2]int上面的例子定义了一个长度为2,元素类型为int的数组…

PostgreSQL源码分析——缓冲区管理器

这里我们分析一下PG数据库缓冲区的代码。缓冲区是十分重要的&#xff0c;对数据库的性能和稳定性有着直接的影响。缓冲区是数据库SQL计算层与外部存储&#xff08;磁盘&#xff09;交互的关键。数据页的落盘与读取&#xff0c;都要经过缓冲区。 README src/backend/storage/…

解决企业微信内嵌H5页面导航栏返回上一级是空白页面问题

在项目中,产品要求返回上一级不能空白页,可以是工作台,所以要引入企业微信的返回按钮的用法,以下是详细步骤: 1.引入企业微信的版本内容 <script src"https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script> 在public底下的index.html底…

pdf只要前几页,pdf怎么只要前几页

在现代办公和学习环境中&#xff0c;PDF文件已成为我们日常处理信息的重要工具。然而&#xff0c;有时我们并不需要整个PDF文件的内容&#xff0c;而只是其中的几页。那么&#xff0c;如何高效地提取PDF文件中的特定页面呢&#xff1f;本文将为您介绍几种实用的方法。 打开 “ …

法大大亮相国家级期刊,助力数字政务有实“例”!

近日&#xff0c;在最新发布的国家级学术期刊《市场监督管理》中&#xff0c;法大大作为国内领先的电子签厂商亮相&#xff0c;这也是电子签行业的“第一次”。 截自《市场监督管理》2024年第12期 《市场监督管理》杂志于1953年创刊&#xff0c;是中国工商出版社主办的一本学术…