0%

QT_(十)-强制转换

C++ 强制转换

dynamic_cast: 通常在基类和派生类之间转换时使用,run-time cast。
const_cast: 主要针对const和volatile的转换。
static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。
reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。

QT框架提供的强制类型转换方法:

qobject_cast

该函数类似于 C++中的dynamic_cast,但执行速度比dynamic_cast 更快,且不需要
  C++的RTTI 的支持,但qobject_cast 仅适用于QObject 及其派生类

1
2
3
4
5
6
7
8
9
QObject *obj = new QTimer;     // QTimer inherits QObject

QTimer *timer = qobject_cast<QTimer *>(obj);

// timer == (QObject *)obj

QAbstractButton *button = qobject_cast<QAbstractButton *>(obj);

// button == 0

qgraphicsitem_cast :

  只适用于QGraphicsItem 的子类

  它的优势在于,它并不使用 RTTI,而且转换失败的话会返回 nullptr

qvariant_cast :

  QVariant类型转换为实际的类型

-------------本文结束感谢您的阅读-------------