我有一些有效的代码,但我不明白这种模式的含义:
QWindow * window;
if (window = qobject_cast<QWindow *>(root))
window->show();
答案 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上的小型构建,或者一些嵌入式平台。)