什么“window = qobject_cast <qwindow * =”“>(root)”是什么意思?

时间:2016-06-16 12:40:51

标签: qt

我有一些有效的代码,但我不明白这种模式的含义:

QWindow * window;
if (window = qobject_cast<QWindow *>(root))
  window->show();

2 个答案:

答案 0 :(得分:3)

qobject_cast是基于dynamic_cast的类的QObject的替代品。 root是指向某个对象的指针。在您的情况下,它可能具有QObject*QWidget*类型。但是,代码期望它实际上可能是QWindow*对象。 qobject_cast检查对象是否为QWindow类的实例或从其继承的任何类,如果不是这样,则返回0。如果检查成功,qobject_cast会返回指向对象的QWindow*指针,代码可以使用它来调用QWindow - 通过QObject*或{无法使用的特定方法{1}}指针。

答案 1 :(得分:0)

代码转换为以下伪代码:

if (root is an instance of `QWindow` set window to that instance)
  show that window;

qobject_cast的工作原理与dynamic_cast完全相同,但仅适用于QObject - 派生类,即使运行时类型信息不可用也适用(例如,对于MSVC上的小型构建,或者一些嵌入式平台。)

相关问题