qt5如何定义一个全局窗口对象呀,就是可以在不同的cpp文件里面调用的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt5如何定义一个全局窗口对象呀,就是可以在不同的cpp文件里面调用的相关的知识,希望对你有一定的参考价值。

参考技术A 举个例子:
global.h:
QWidget* getGlobalWidget();

global.cpp:
QWidget* getGlobalWidget()

static QWidget globalWidget;

return &globalWidget;



需要这个全局对象的,#include "global.h"就可以了追问

不用那个extern关键字声明吗

这样是调用getGlobalWidget()这个函数吗

追答

不用extern,因为你调用extern的时候,不能保证这个QWidget已经初始化了。
你可以去看看Effective C++这本书,有说到这种情况。
而我给你的例子,是一个单例模式,在定义globalWidget的时候,它一定是初始化了的,而且每次返回的都是同一个实例。

追问

哦哦

谢谢了

本回答被提问者采纳

如何在 Qt 中连接来自不同窗口的两个对象?

【中文标题】如何在 Qt 中连接来自不同窗口的两个对象?【英文标题】:How can I connect two objects from different windows in Qt? 【发布时间】:2020-01-21 16:41:21 【问题描述】:

我有一个window1,它有 2 个按钮,一个 add 按钮和一个 next 按钮。

add 按钮最初是禁用的。单击 next 按钮后,将打开一个新的window2。 在那个窗口上有一个 OK 按钮。

单击window2确定 按钮后,我想启用window1添加 按钮。

是否可以从不同的窗口连接两个对象(信号和插槽)?如果是,我必须在哪里(在哪个.cpp 文件上)编写连接函数?

【问题讨论】:

添加更多细节。哪个窗口是信号和插槽?您可能需要第三个 .cpp 文件来存储这些文件,或者您必须提供有关每个窗口背后代码的更多详细信息。 【参考方案1】:

当然,您可以将来自一个对象的信号连接到另一个对象中的插槽 - 否则该功能不会很有用。

您可以在可以访问两者的代码中在任一对象外部进行连接,或者您可以将其中一个对象的指针传递给另一个对象,然后在另一个对象内部进行连接。什么最有意义取决于您的代码的结构。

【讨论】:

以上是关于qt5如何定义一个全局窗口对象呀,就是可以在不同的cpp文件里面调用的的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 JavaScript 窗口全局对象中定义的某个对象中找到 JQuery 函数吗?

java组件的方法,比如setSize(),怎么用了这个方法整个窗口大小都变了,这是组件的方法呀?小弟刚接触java

网页中 需要不同的hover样式 如何设置不同的hover样式 怎么去命名 哪一个种全局 哪一个

如何引用一个已经定义过的全局变量

javascript中的window对象是html对象还是页面元素对象还是内置对象呀,他们有啥区别

Qt5 QMainWindow使用