首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"window = qobject_cast<QWindow *>(根)“是什么意思?

"window = qobject_cast<QWindow *>(根)“是什么意思?
EN

Stack Overflow用户
提问于 2016-06-16 20:40:51
回答 2查看 107关注 0票数 0

我有一些可以工作的代码,但是我不理解这个模式的含义:

代码语言:javascript
复制
QWindow * window;
if (window = qobject_cast<QWindow *>(root))
  window->show();
EN

回答 2

Stack Overflow用户

发布于 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*指针中不可用。

票数 3
EN

Stack Overflow用户

发布于 2016-06-17 02:59:01

代码转换为以下伪代码:

代码语言:javascript
复制
if (root is an instance of `QWindow` set window to that instance)
  show that window;

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37859557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档