Qt的基本函数

Qt的基本函数

1.输出调试信息函数——qDebug()

在pro文件中,Qt默认会包含“core”以及“gui”两个模块。其中核心模块——“core”包含编程必需的宏以及函数等。

  • 函数原型:
void qDebug(const char *message, ...)
  • 函数作用:
可以灵活的将调试信息从控制台输出。
  • 使用示例:
qDebug("Hello world!");
qDebug("length of Helloworld is %d",str1.size());

注意,如果手动引入了头文件,则可以使用更多的语法格式进行输出。

#include <QDebug>
int num = 10;
float PI = 3.14;
qDebug()<<"value1 = " << num << "PI=" << PI;

源码示例:

#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug

从形式上来看它是一个宏定义无异,不过该宏指向的为QMessageLogger类中的debug函数,因此,从宏观上来就qDebug依旧可以理解为它是一个函数。

2.绝对值函数——qAbs()

  • 函数原型:
T qAbs(const T &t)
  • 函数作用:
返回某个数值的绝对值
  • 使用示例:
int absoluteValue;
int myValue = -4;
absoluteValue = qAbs(myValue);
  • 源码解析:
template <typename T>
Q_DECL_CONSTEXPR inline T qAbs(const T &t) { return t >= 0 ? t : -t; }

首先定义了一个模板。

紧接着以内联函数的形式完成了qAbs的定义,这种方式与之前qDebug的定义方式有很大差异。它也是Qt比较主流的封装方式之一,后续的几个函数皆是采用的这种方式,不再展开详细讲解。

3.求最大值函数——qMax()

  • 函数原型:
const T &qMax(const T &a, const T &b)
  • 函数作用:
返回a和b之间的较大值
  • 使用示例:
int myValue = 6;
int yourValue = 4;
int maxValue = qMax(myValue, yourValue);
// maxValue == myValue
  • 源码解析:
template <typename T> Q_DECL_CONSTEXPR inline const T &qMax(const T &a, const T &b)
{
    return (a < b) ? b : a;
}

首先定义了模板T

内联函数中使用三目运算符完成了对应函数体的实现。

4.求最小值函数——qMin()

  • 函数原型:
const T &qMin(const T &a, const T &b)
  • 函数作用:
返回a和b之间的较小值
  • 使用示例:
int myValue = 6;
int yourValue = 4;
int minValue = qMin(myValue, yourValue);
// minValue == yourValue
  • 源码解析:
template <typename T> Q_DECL_CONSTEXPR inline const T &qMin(const T &a, const T &b)
{
    return (a < b) ? a : b;
}

首先定义了模板T

内联函数中使用三目运算符完成了对应函数体的实现。

5.四舍五入函数——qRound()

  • 函数原型:
int qRound(double d)
  • 函数作用:
返回d四舍五入后的int
  • 使用示例:
double valueA = 2.3;
double valueB = 2.7;
int roundedValueA = qRound(valueA);
// roundedValueA = 2
int roundedValueB = qRound(valueB);
// roundedValueB = 3
  • 源码解析:
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); }

注意三目运算符的使用。

6.比较浮点数的函数——qFuzzyCompare()

  • 函数原型:
bool qFuzzyCompare(float p1, float p2)
  • 函数作用:
返回两个浮点数是否相等,如果相等返回true,否则返回false
  • 使用示例:
float f1 = 3.1415926f;
float f2 = 3.1415927f;
if(f1 == f2)
{
    qDebug() << "相等";
}
else
{
    qDebug() << "不相等";
}
qDebug() << qFuzzyCompare(f1,f2);
  • 源码解析:
Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyCompare(float p1, float p2)
{
    return (qAbs(p1 - p2) * 100000.f <= qMin(qAbs(p1), qAbs(p2)));
}

注意:函数存在重载情况。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值