Qt全局宏和变量

2023-11-06

1.  Qt 全局宏定义

Qt版本号:

 QT_VERSION :  (major << 16) + (minor << 8) + patch

检测版本号:

QT_VERSION_CHECK(major, minor, patch)((major<<16)|(minor<<8)|(patch))

当使用命名空间时的一些宏定义:

namespace QT_NAMESPACE {} //命名空间定义

# define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name

# define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE;

# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {

# define QT_END_NAMESPACE }

# define QT_BEGIN_INCLUDE_NAMESPACE }

# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE {

# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE

# define QT_END_MOC_NAMESPACE

# define QT_FORWARD_DECLARE_CLASS(name) /

    QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE /

    using QT_PREPEND_NAMESPACE(name);

 

# define QT_FORWARD_DECLARE_STRUCT(name) /

    QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE /

    using QT_PREPEND_NAMESPACE(name);

Q_GLOBAL_STATIC(type, name)用于定义一个全局的静态变量(线程安全的).用它来初始化一个对象指针(函数指针).

Q_GLOBAL_STATIC_WITH_ARGS(type, name, arguments):同上,可带参数.

 

Q_UNUSED():通常用于某个函数的参数,表明该参数未在方法体中使用.

常用数据类型:

qint8, quint8, qint16, quint16, qint32, quint32, qint64, quint64, qlonglong(=int64), qulonglong(=uint64)

quintptr, qptrdiff, 作为指针是一样大的.如:

      sizeof(void *) == sizeof(quintptr)

      && sizeof(void *) == sizeof(qptrdiff)

Qt有用的类型定义:uchar, ushort, uint, ulong

实用内联函数:qAbs(), qRound(), qRound64(), qMin(), qMax(), qBound();

try-catch宏:

#ifdef QT_NO_EXCEPTIONS

#  define QT_TRY if (true)

#  define QT_CATCH(A) else

#  define QT_THROW(A) qt_noop()

#  define QT_RETHROW qt_noop()

#else

#  define QT_TRY try

#  define QT_CATCH(A) catch (A)

#  define QT_THROW(A) throw A

#  define QT_RETHROW throw

#endif

每个QT_TRY对应一个QT_CATCH,不要在catch语句块中使用异常实例.

 

调试相关函数:

qDebug(), qWarnig(), qCritical(), Q_ASSERT()

 

其他一些函数:

该宏用于定义某个类,禁止拷贝

#define Q_DISABLE_COPY(Class) /

    Class(const Class &); /

    Class &operator=(const Class &);

qgetenv(), qputenv(), qIntCast(double 或float). qsrand(uint seed), qrand()

2. Qt的内存管理函数

void *qMalloc(size_t size);

void qFree(void *ptr);

void *qRealloc(void *ptr, size_t size);

void *qMallocAligned(size_t size, size_t alignment)

void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment)

void qFreeAligned(void *ptr)

void *qMemCopy(void *dest, const void *src, size_t n);

void *qMemSet(void *dest, int c, size_t n);

注: 数组下标为-1的地址对于数组来说是越界访问了,但是这个地址是有意义的.这个地址就是所申请的数组存储空间的首地址的向前偏移一个单位(也就是偏移一个当前数组类型所对应的字节数)所对应的地址。这个地址由于没有跟着数组空间一起初始化,所以其中的数据是不确定的.如果是正在被系统或者其他应用程序使用中的地址空间,那么可以被访问,其中的数据的意义取决于被系统或者其他应用程序所写入的数据,但是访问后,有可能会引起系统或者其他应用程序异常。如果是没有被使用的地址,那么就是一个野地址,那么其中的数据是随机的,无意义的

 

3. 环境变量设置函数

qputenv():与putenv()基本类似,由于VC2005后废除了putenv()函数,所有定义了此函数,在VC环境中调用替代的函数,其他平台调用标准C库函数putenv().

qgetenv():获取某个环境变量的值.

 

4.自定义输出函数

QtMsgHandler qInstallMsgHandler(QtMsgHandler h)

其中:typedef void (*QtMsgHandler)(QtMsgType, const char *);

利用该函数可定制自己的调试信息输出.

 

5. 断言

Q_ASSERT(bool test):当断言失败时,打印出警告信息,包含了源码文件名和行号.

void Q_ASSERT_X(bool test, const char *where, const char *what)

 

void Q_CHECK_PTR(void *pointer):检测非法指针,如果指针为0,打印警告信息.

 

6.系统信息类QsysInfo


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt全局宏和变量 的相关文章

  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 用于创建类图的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 请建议用于创建符合以下标准的类图的工具 它应该是平台无关的 因为我使用 Linux 并且该文件预计由使用 Windows Mac 的团队其
  • 我如何使用 cout << myclass

    myclass是我写的一个C 类 当我写的时候 myclass x cout lt lt x 我该如何输出10 or 20 2 就像一个integer or a float value 通常通过重载operator lt lt 对于你的班级
  • ABSMIDDLE 在 Firefox 和 Chrome 上的工作方式不同吗?

    我有一个图标图像和文本 如下所示 一切的代码来源是 img src align left My Title Here 问题在于 与 Firefox 相比 Chrome 中的图标没有与标题垂直对齐 我觉得absmiddle根本不起作用 有什么
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • Django modelAdmin __init__ 和内联

    嘿 我对 Django 相当陌生 我正在寻找动态编辑管理类变量 完整的想法是在添加时隐藏内联 仅在编辑时显示 但我在这里提炼这个问题 有人可以解释为什么这不起作用吗 class dbTablePermissionInline admin T
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • C#:为派生类继承单独的静态成员

    我的问题简述 class A Other stuff in my class protected static staticMember class B A Other stuff in my class Will have A stati
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 如何在 iPhone 上使用 SwiftUI 显示表格数据?

    我正在为当地的体育联盟开发一个应用程序 一个视图将是当前排名 每行有几个字段 球队名称 已玩的比赛 得分等 我希望球队列左对齐 其他列右对齐 似乎最好的答案是 SwiftUI 的 Table 但在 iPhone 上 它只显示第一列 我尝试过
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某

随机推荐

  • 解决git pull 报错insufficient permission for adding an object to repository database .git/objects

    这个报错是没有 git objects文件的写入权限 可能是 git objects被root角色创建 等到别的角色去操作时就产生了权限问题 所以解决这个问题就要改 git objects的权限 chown R username group
  • Java学习之:异常及其处理方式

    文章目录 1 所有异常都继承 Throwable 类 2 分类 3 为什么要处理异常 4 异常处理格式 5 完整异常信息的取得 5 1 常见的异常 6 throws throw 关键字 6 1 throws 用在定义方法上 6 1 1 用在
  • R中重命名数据框列名小技巧

    R中重命名数据框列名 文章目录 前言 一 基础包names函数和索引 二 使用dplyr rename函数 前言 R语言中两种修改数据框列名的小方法 创建名为df的数据框 一 基础包names函数和索引 将第二列名score修改为popul
  • 深入理解Android之Gradle

    转自 http blog csdn net innost article details 48228651 深入理解Android之Gradle 格式更加精美的PDF版请到 https pan baidu com s 1boG2cLD下载
  • SQL语句中的循环

    SQL语句中的循环 SQL语句中的循环类似于foreach循环 可以循环遍历某个表并进行新增 修改和删除的操作 SQL语句中的循环 使用SQL的游标来实现 上示例 declare ID int 声明变量 名称 类型 begin 开始 pri
  • setFocus不能生效的问题

    focusInEvent只有在对象显示出来的情况下设定setFocus才可以触发 这一点help手册里有说明 转一篇文章如下 http blog csdn net alex201030273437 article details 81937
  • CSV简单了解

    1 CSV介绍 CSV全称是Comma Separate Values 这种文件格式可以作为不同程序之间的数据交互的格式 csv就是一种纯文本文件 如 txt doc等 即是一组字符序列 字符之间已英文字符的逗号或制表符 Tab 分隔 语法
  • Python数据结构-----leetcode232.用栈实现队列

    目录 前言 方法讲解 示例 代码实现 232 用栈实现队列 前言 我们都知道队列的特征是先进先出 就跟排队一样先到先得 而栈的特征是后进后出 那这里我们怎么去通过两个栈来实现一个队列的功能呢 这一期我们一起来学习吧 方法讲解 这里需要准备好
  • 订单业务中的重要问题:超卖问题的解决方案

    订单业务中的重要问题 超卖问题的解决方案 我在做过的一些项目中都涉及到了订单的业务 如果你的项目中有关于订单的业务模块 那肯定说明你的项目中有卖商品的功能 所以有买卖场景就面临一个很常见的一个问题 那就是超卖问题 下面我就整理一下我在做项目
  • MyBatis与JDBC连接数据库所使用的url之间的差异

    1 在JDBC连接里是这样的 连接无误 2 在Mybatis里配置要这样 3 主要区别 说明 JDBC 方式连接 MySQL 不需要对 进行转义 而在Mybatis里要求一定要对 转义 4 如果是在properties文件里 不用转义的 在
  • IP静态路由实验报告

    一 将192 168 1 0 24划分为4个网段 192 168 1 0 26 192 168 1 64 26 192 168 1 128 26 192 168 1 192 26 1 取192 168 1 0 26继续划分 为主干道添加IP
  • Spring 加载、解析applicationContext.xml 流程

    概要 Spring 框架使用了BeanFactory 进行加载 xml 和生成 bean 实例 下面我们分析下Spring加载xml文件的过程 spring 版本是最新的 4 3 9 release 版本 示例 XmlBeanFactory
  • java 转换tif图片为jpg,解决转换后颜色异常问题

    java 转换tif图片为jpg 解决转换后颜色异常问题 说明 正常情况下 tif转换jpg图片会出现颜色失真 丢失部分颜色 原因是两种图片的色彩模式不同 jpg默认使用的是RGB色彩模式 TIF默认使用的是CMYK色彩模式 RGB的色域比
  • 有关“ModuleNotFoundError: No module named ‘flask._compat’”错误的解决过程

    在进行flask安装后 运行程序的过程中出现了 ModuleNotFoundError No module named flask compat 的错误 在查询了多个网站后给出了不同的答案 其报错原因是flask版本过高导致无法识别该语法
  • 仿京东 项目笔记2(注册登录)

    这里写目录标题 1 注册页面 1 1 注册 登录页面 接口请求 1 2 Vue开发中Element UI的样式穿透 1 2 1 v deep的使用 1 2 2 elementUI Dialog内容区域显示滚动条 1 3 注册页面 步骤条和表
  • 服务器i5 和e系列,e5和i5有什么区别

    两个系列的处理器主要在设计规格和面向范围方面存在区别 设计规格上 前者核心数更多 多线程能力更强 但睿频能力相对较弱 后者核心数较少 多线程能力不如前者 但睿频能力更强 面向范围上 前者主要面向服务器 嵌入式等企业设备 后者主要面向消费级硬
  • (LeetCode)全排列

    目录 题目要求 题目理解以及思路分析 代码分部讲解 第一部分 第二部分 题目要求 给定一个不含重复数字的数组 nums 返回其 所有可能的全排列 你可以 按任意顺序 返回答案 示例 1 输入 nums 1 2 3 输出 1 2 3 1 3
  • 规则引擎Drools使用 第十一篇 Drools 的高级语法之LHS增强

    前面我们已经知道了在规则体中的LHS部分是介于when和then之间的部分 主要用于模式匹配 只有匹配结果为true时 才会触发RHS部分的执行 下面我们会针对LHS部分学习几个新的用法 目录 复合值限制in not in 条件元素eval
  • 升压电路(BOOST)与降压电路(BUCK)

    一 电路中产生电流的条件是 1 电路里必须有电源供电 2 电路必须形成闭合回路 降压元器件 升降压电路构成的核心元器件 1 电感 储存能量 电感是无法突变的 工作状态是线性的 2 二极管 3 mos管 首先先分清楚mos是N mos还是P
  • Qt全局宏和变量

    1 Qt 全局宏定义 Qt版本号 QT VERSION major lt lt 16 minor lt lt 8 patch 检测版本号 QT VERSION CHECK major minor patch major lt lt 16 m