我有一些可以工作的代码,但是我不理解这个模式的含义:
QWindow * window;
if (window = qobject_cast<QWindow *>(root))
window->show();发布于 2016-06-16 20:51:11
qobject_cast是用于QObject-based类的dynamic_cast的Qt替代品。root是指向某个对象的指针。在您的例子中,它可能有QObject*或QWidget*类型。但是,代码期望它实际上可能是一个QWindow*对象。qobject_cast检查对象是QWindow类的实例还是继承自该类的任何类,如果不是,则返回0。如果检查成功,qobject_cast将返回指向对象的QWindow*指针,并且代码可以使用它来调用QWindow-specific方法,这些方法在QObject*或QWidget*指针中不可用。
发布于 2016-06-17 02:59:01
代码转换为以下伪代码:
if (root is an instance of `QWindow` set window to that instance)
show that window;qobject_cast的工作原理与dynamic_cast完全相同,但仅适用于QObject-derived类,即使运行时类型信息不可用(例如,用于MSVC上的小型构建,或在一些嵌入式平台上)。
https://stackoverflow.com/questions/37859557
复制相似问题