C++ 如何调用函数刷新GUI
我正在重构一些代码,以便将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
#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);
}
}
}