前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享一些Qt实用函数(宏)

分享一些Qt实用函数(宏)

作者头像
Qt君
发布2020-07-14 16:01:11
1.3K0
发布2020-07-14 16:01:11
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

❝下列函数或宏均来自Qt的qglobal.h头文件。❞

  • 求绝对值
代码语言:javascript
复制
template <typename T>
Q_DECL_CONSTEXPR inline T qAbs(const T &t) { return t >= 0 ? t : -t; }
  • 舍入到最接近的整数,如:0.5 ==> 1, -0.5 => 0
代码语言:javascript
复制
Q_DECL_CONSTEXPR inline int qRound(double d)
{ return d >= 0.0 ? int(d + 0.5) : int(d - double(int(d-1)) + 0.5) + int(d-1); }
Q_DECL_CONSTEXPR inline int qRound(float d)
{ return d >= 0.0f ? int(d + 0.5f) : int(d - float(int(d-1)) + 0.5f) + int(d-1); }

Q_DECL_CONSTEXPR inline qint64 qRound64(double d)
{ return d >= 0.0 ? qint64(d + 0.5) : qint64(d - double(qint64(d-1)) + 0.5) + qint64(d-1); }
Q_DECL_CONSTEXPR inline qint64 qRound64(float d)
{ return d >= 0.0f ? qint64(d + 0.5f) : qint64(d - float(qint64(d-1)) + 0.5f) + qint64(d-1); }
  • 求最值
代码语言:javascript
复制
template <typename T>
Q_DECL_CONSTEXPR inline const T &qMin(const T &a, const T &b) { return (a < b) ? a : b; }
template <typename T>
Q_DECL_CONSTEXPR inline const T &qMax(const T &a, const T &b) { return (a < b) ? b : a; }
  • 求中间值
代码语言:javascript
复制
template <typename T>
Q_DECL_CONSTEXPR inline const T &qBound(const T &min, const T &val, const T &max)
{ return qMax(min, qMin(max, val)); }
  • 对宏参数字符串化
代码语言:javascript
复制
#define QT_STRINGIFY2(x) #x
#define QT_STRINGIFY(x) QT_STRINGIFY2(x)
  • 避免"未使用的参数"编译警告
代码语言:javascript
复制
#define Q_UNUSED(x) (void)x;
  • 实现禁止类复制
代码语言:javascript
复制
#define Q_DISABLE_COPY(Class) \
    Class(const Class &) Q_DECL_EQ_DELETE;\
    Class &operator=(const Class &) Q_DECL_EQ_DELETE;
  • 设置某个环境变量
代码语言:javascript
复制
Q_CORE_EXPORT bool qputenv(const char *varName, const QByteArray& value);
  • 获取某个环境变量
代码语言:javascript
复制
Q_CORE_EXPORT QByteArray qgetenv(const char *varName);
  • 随机数生成
代码语言:javascript
复制
Q_CORE_EXPORT void qsrand(uint seed);
Q_CORE_EXPORT int qrand();
  • 相当于while(1)
代码语言:javascript
复制
#define Q_FOREVER for(;;)
  • D指针与Q指针,主要用于隐藏数据和二进制兼容实现。
代码语言:javascript
复制
#define Q_D(Class) Class##Private * const d = d_func()
#define Q_Q(Class) Class * const q = q_func()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档