C++ 如何调用函数刷新GUI

C++ 如何调用函数刷新GUI,c++,C++,我正在重构一些代码,以便将GUI与某些状态解耦 #include <StateObject> Class GUI{ ... StateObject A; void doSomething() { A->hullaballoo();} **void ReFreshMyGui() { //take state A and redraw }** }; 状态对象由多个类共享以更新状态,但此Gui对象专门显示状态。因此,我希望在修改函数时通过State

我正在重构一些代码,以便将GUI与某些状态解耦

#include <StateObject>

Class GUI{  
 ...  
 StateObject A;
 void doSomething() { A->hullaballoo();}  

 **void ReFreshMyGui() { //take state A and redraw }**  
 };  
状态对象由多个类共享以更新状态,但此Gui对象专门显示状态。因此,我希望在修改函数时通过StateObject调用Refresh函数


我不确定信号将如何或是否提供解决方案。有什么提示吗?

为了使GUI和数据解耦,您可以使用MVC模式。这意味着您的GUI应该注册到您的模型的数据对象,并且每当数据发生更改时,GUI都会收到通知,并且它将是重新绘制自身的GUI

但是要小心,模型不应该有一个具体GUI的概念,相反,GUI应该实现一个观察者界面,其中包含一个方法,例如void Update,该方法将在发生更改时调用通知处理程序

只需在谷歌上寻找MVC模式。你会发现成千上万的有用的教程。 您还可以考虑MVP和MVVM模式

例如:

    class Observer
    {
     virtual void Update(void* data) = 0;
    }


    class GUI : public Observer
    {
public:
     virtual void Update(void* data)
     {
         //Redraw method and some other things you may 
      //want to do with the new data
     }
    }


    class Model 
    {
    private:
       int m_iData;
       List<Observer> observers;

    public:
       void SetData(int iData)
       {
           m_iData = iData;
           for(int i = 0; i < observers.Length; i++)
           {
               observers[i].Update(NULL);
           }
       }
    }