当前位置: 首页 > news >正文

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

相关文章:

Qt项目学习-20240617

Qt项目学习 1.0 文件构建 1.1 预处理命令 C预处理命令是编译过程中的第一步&#xff0c;发生在编译器进行实际编译之前。预处理器&#xff08;preprocessor&#xff09;执行这些命令&#xff0c;它们不是C语言的一部分&#xff0c;但对源代码的编译过程至关重要。以下是一些常…...

加密好的WPSword文档,忘记密码怎么办?

在日常办公和学习中&#xff0c;我们经常使用WPS Word等文档处理软件来创建和编辑重要文件。为了保护这些文件不被未经授权的人访问&#xff0c;我们通常会选择给文档设置密码。然而&#xff0c;有时我们可能会因为时间久远或其他原因而忘记自己设置的密码&#xff0c;这时该如…...

C# WPF 读写CAN数据

C# WPF 读写CAN数据 CAN 分析仪 分析仪资料下载 官方地址&#xff1a;https://www.zhcxgd.com/1.html CSDN&#xff1a; 项目配置 复制Dll库文件 文件在上面的资料里面 设置不安全代码 CAN C#工具类 CAN_Tool.cs using Microsoft.VisualBasic; using System; using Sys…...

力扣2517.礼盒的最大甜蜜度

力扣2517.礼盒的最大甜蜜度 二分答案求最小值 排完序判断是否有k个差距至少为mid的元素别用i遍历 可能会越界 用 : 有多少取多少 class Solution {public:int maximumTastiness(vector<int>& price, int k) {ranges::sort(price);auto check [&](int mid) -&…...

多模块存储器

随着计算机技术的发展&#xff0c;处理的信息量越来越多&#xff0c;对存储器的速度和容量要求也越来越高&#xff1b;而且随着CPU性能的不断提高、IO设备数量不断增加&#xff0c;导致主存的存取速度已经称为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访问速度。…...

Windows反截屏开发实现

文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力&#xff0c;所谓反截屏就是我们无法通过截图软件&#xff08;微信&#xff0c;QQ&#xff0c;截图等程序&#xff09;截取桌面的…...

Android.mk的用法

前言 Android.mk 文件是 Android 编译系统中用于描述项目源文件、库和模块的 Makefile。它采用 GNU Make 的语法,但也包含了一些特定于 Android 编译系统的规则和变量。以下是对其语法和使用方法的详细解释及示例。 一:模块种类 一个Android.mk file用来向编译系统描述你的源…...

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候&#xff0c;编译遇到的这个报错&#xff1a; CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上&#xff0c;此时需要根据自己的gra…...

jQuery如何把单选框设置为选中状态

在网页开发中&#xff0c;我们经常需要使用表单元素来收集用户数据。其中&#xff0c;单选框&#xff08;radio button&#xff09;是一种常见的表单元素&#xff0c;用于从一组选项中选择一个。使用jQuery&#xff0c;我们可以轻松地控制这些单选框的状态&#xff0c;包括将它…...

Mware Fusion Pro 13 mac版:一键掌控虚拟世界

VMware Fusion Pro 13是一款功能卓越的虚拟化软件&#xff0c;专为Mac操作系统量身打造。这款软件为用户提供了一个一站式的虚拟化解决方案&#xff0c;能够满足各种多样化的需求。 VMware Fusion Pro 13 Mac获取 VMware Fusion Pro 13的强大之处在于其采用了最 先进的虚拟化…...

PTA - 函数的定义与调用

编写一个名为collatz()的函数,它有一个名为number的参数&#xff1a; 如果number是偶数,那么collatz()就打印number加上2如果number是奇数,那么collatz()就打印number乘以2 函数接口定义&#xff1a; def collatz(number)裁判测试程序样例&#xff1a; /* 请在这里填写答案…...

Solr7.4.0报错org.apache.solr.common.SolrException

文章目录 org.apache.solr.common.SolrException: Exception writing document id MATERIAL-99598435990497269125316 to the index; possible analysis error: cannot change DocValues type from NUMERIC to SORTED_NUMERIC for field "opt_time"Exception writing…...

从2-3-4树开始理解红黑二叉树(JAVA代码手撸版)

经典的红黑二叉树在新增/删除数据时维持自平衡始终对应着一个2-3-4 树。本文只关注2-3-4 对应的经典红黑二叉树。 暂时不考虑 2-3 树对应的左倾红黑二叉树。 背景知识 2-3-4 树简介 一棵 2-3-4 树的结点分为 内部结点 (internal nodes) 和 叶子结点 (leaf nodes) &#xff0c;…...

模板类与继承

1模板类继承普通类&#xff08;常见&#xff09; #include<iostream> using namespace std; class AA { public:int m_a;AA(int a) :m_a(a) { cout << "调用了AA的构造函数\n"; }void func1() { cout << "调用func1&#xff08;&#xff09;…...

随手记:uniapp图片展示,剩余的堆叠

UI效果图&#xff1a; 实现思路&#xff1a; 循环图片数组&#xff0c;只展示几张宽度就为几张图片边距的宽度&#xff0c;剩下的图片直接堆叠展示 点击预览的时候传入当前的下标&#xff0c;如果是点击堆叠的话&#xff0c;下标从堆叠数量开始计算 <template><…...

微服务迁移、重构最佳经验

1. 了解现有的单体应用: - 应用架构和技术栈 要了解现有的应用架构和技术栈&#xff0c;可以采取以下几个步骤&#xff1a; 1. 了解应用的背景和目标&#xff1a;首先要了解应用的背景和目标&#xff0c;包括应用所属的行业、应用的类型&#xff08;例如Web应用、移动应用等…...

【Python】从0开始的Django基础

Django框架基础 unit01一、Django基础1.1 什么是Django?1.2 安装与卸载1.2.1 Python与Django的版本1.2.2 安装1.2.3 查看Django版本1.2.4 卸载 二、Django项目2.1 概述2.2 创建项目2.3 启动项目2.4 项目的目录结构2.5 配置 三、URL 调度器3.2 定义URL路由3.2 定义首页的路由3.…...

红黑树(数据结构篇)

数据结构之红黑树 红黑树(RB-tree) 概念&#xff1a; 红黑树是AVL树的变种&#xff0c;它是每一个节点或者着成红色&#xff0c;或者着成黑色的一棵二叉查找树。对红黑树的操作在最坏情形下花费O(logN)时间&#xff0c;它的插入操作使用的是非递归形式实现红黑树的高度最多是…...

高级视频编码器性能对比(H265、VP9、AV1)

1、背景介绍 目前在视频编解码器中&#xff0c;H264已经成为绝对的主流&#xff0c;被大部分设备、浏览器所支持。虽然有更先进的编码器推出&#xff0c;但是受限于推广速度和设备支持成本&#xff0c;一直未能成为主流。 今年公司目标是持续降本增效&#xff0c;现在将”屠刀…...

示例:WPF中DataGrid简单设置合并列头

一、目的&#xff1a;应用DataGridTemplateColumn列模板&#xff0c;去拆分列头和单元格布局的方式设置列头合并样式 二、实现 效果如下 三、环境 VS2022 四、示例 应用DataGridTemplateColumn自定义列头信息和单元格信息 <DataGrid AutoGenerateColumns"False"…...

Matlab图像处理——细胞图像的分割和计数显示

一. 项目介绍 使用MATLAB编写的细胞图像分割及计数系统&#xff0c;实现了对图像内细胞的计数&#xff0c;以及对每个细胞周长和面积的测量&#xff0c;并分别展示了分割后的每个细胞的图像。实验步骤共分为图像预处理、图像预分割、空洞填充、黏连细胞分割、细胞个数统计、细胞…...

六爻排盘神机

选修课留了3000字的论文......确实&#xff0c;削微有那么一点小困难…… 但是&#xff0c;倘若我拿出已经占了6419个字符的 “六爻排盘神机” &#xff0c;阁下…应该…不会…骂我吧 且看&#xff0c;六爻排盘神机&#xff01; import random import datetime from lunarcale…...

【ARMv8/v9 GIC 系列 2.1 -- GIC SPI 中断的 pending 和 clear pending 配置】

文章目录 GIC Pending 和 Clear PendingGICD_ISPENDR<n>GICD_ICPENDR<n>参数<n>编号解释使用举例设置中断ID 100为挂起状态清除中断ID 100的挂起状态 代码实现小结 GIC Pending 和 Clear Pending 在ARMv8体系结构中&#xff0c;GICD_ISPENDR<n> 和 GI…...

SpringBoot集成logback初始化源码解析(部分)

一.SpringBoot配置扩展点 SpringBoot日志模块使用监听的方式进行初始化&#xff0c;在SpringBoot项目启动后&#xff0c;会通知日志监听器 在日志监听器中ApplicationStartingEvent事件用来确定到底使用哪个日志系统&#xff0c;logback log4j等 在日志监听器中ApplicationEn…...

【Linux工具】yum软件包管理器与Vim编辑器的高效运用

目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 ​编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试&#xff1a; Vim 命令集解释…...

Matlab数学建模实战应用:案例4 - 图像处理

目录 前言 一、图像处理基础 二、Matlab图像处理工具箱 三、案例&#xff1a;图像锐化、去噪和分割 步骤 1&#xff1a;读取和显示图像 步骤 2&#xff1a;图像锐化 步骤 3&#xff1a;图像去噪 步骤 4&#xff1a;图像分割 完整代码示例 四、实际应用 实例总结 总…...

Studying-代码随想录训练营day15| 222.完全二叉树的节点个数、110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

第十五天&#xff0c;二叉树part03&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 257.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 总结 257.完全二叉树的节点个数 文档讲解&#xff1a;代码随想录完全二叉树的节点个数 视频讲解…...

Python 基础:异常

目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&a…...

XML 应用程序

XML 应用程序 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它是一种自我描述的语言&#xff0c;允许用户定义自己的标签和文档结构。XML广泛应用于各种应用程序中&#xff0c;包括网站开发、数据交换、文档管理等。本文将探讨XML的一些主要…...

SprringCloud Gateway动态添加路由不重启

文章目录 前言&#xff1a;一、动态路由必要性二、SpringCloud Gateway路由加载过程RouteDefinitionLocator接口PropertiesRouteDefinitionLocator类DiscoveryClientRouteDefinitionLocatorInMemoryRouteDefinitionRepositoryCompositeRouteDefinitionLocator类CachingRouteDef…...

wordpress 搜索栏目/电脑办公软件培训班

知识精讲 1.Python中字符串获取子字符串方法&#xff0c;可以通过[头下标:尾下标]来获取。 2.子字符串内包含头下标的字符&#xff0c;但子字符串内不包含尾下标的字符。 3.字符串第一个字符串的索引是0&#xff0c;第二个字符的索引是1&#xff0c;以此类推。 若为[0:],则…...

网站开发 外包/代做百度收录排名

1、硬件方面 目前使用服务器的站长和企业也比较多&#xff0c;也许有人会觉得二者差不多。从表面上看&#xff0c;服务器和我们日常用的PC电脑都是由CPU、内存、硬盘等部分组成&#xff0c;那么&#xff0c;服务器与普通电脑有什么区别呢&#xff1f; 1、服务器CPU设计的可连续…...

从网站建设到网站运营/如何注册域名及网站

Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型&#xff0c;而是直接报错。要解决这个方法只有提前把int转成string&#xff0c;然后再拼接字符串即可。# codingutf8 str 你的分数是: num 82 text strnum分 print text 执行结果&#xff1a;直接报错&am…...

建筑公司网站封面图片/投放广告

React提供的获取DOM元素的方法有两种&#xff0c;一是react-dom中的findDOMNode()&#xff0c;二是refs。1、findDOMNodefindDOMNode通常用于React组件的引用&#xff0c;其语法如下&#xff1a;import ReactDOM from react-dom;ReactDOM.findDOMNode(ReactComponent);当组件被…...

阿里云医疗网站建设/wap网站html5

写代码和做人一样,从前往后看的时候,往往会看不明白,但是,如果站在结果,去看过往,一切都是如此的清澈透明,完全可以理解和接受.人生可以有遗憾,但是,代码不能有BUG.哈哈....扯远了,继续讲代码.字符编码与文件操作息息相关.因为在文件操作中,要判断光标(指针)的位置,就需要用不同…...

网站架构分析工具/做个公司网站多少钱

前因后果&#xff1a; 最近公司职位调动&#xff0c;腾出了空闲时间。闲来无事&#xff0c;便寻思着温故而知新。毕竟总不能在公司坐着发呆吧。所以想到了开个博客&#xff0c;把自己知道的发布到网上&#xff0c;寻求更多同道中友。希望自己知道的能帮到更多的人&#xff0c;就…...