【问题标题】:Qt (PyQt) globally available slots?Qt (PyQt) 全球可用的插槽?
【发布时间】:2015-05-10 06:30:00
【问题描述】:

我有一个相当复杂的 MVC 结构化应用程序,我想要一种方便的方法来从它的几乎任何部分更新 QStatusBar。我的理解是,我必须传递很多对我的 QStatusBar 的引用,或者在我的控制器中设置一堆信号。它会变得一团糟。

我也明白 QApplication 本质上是一个单例。向它添加一个插槽以便我可以从任何地方获取 QApplication 的实例并将其发送给它是一个可以接受的想法吗?

另外,什么是在我的应用程序中传达全局性事物而不用引用其他地方的小部件的控制器和视图的合理方式?

【问题讨论】:

    标签: qt pyqt


    【解决方案1】:

    如何实现单例,允许组件和 gui 之间的通信,例如:

    #include <statuscontroller.h>
    
    StatusController::instance()->setStatus("Status string");
    

    在这种情况下,只有 StatusController 包含指向 QStatusBar 的指针,并且在 gui 线程中全局可用。

    使用 QObject 作为 StatusController 的基类,您可以使用信号和插槽。

    【讨论】:

    • 我正在考虑将单例行为放入 QApplication。但我认为这种方法效果更好。谢谢!
    猜你喜欢
    • 2019-05-17
    • 2017-05-26
    • 2011-06-06
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多