是封装UI更好,还是在QT Creator中传递一个指向UI的指针更好
Is it better to encapsulate UI or pass a pointer to the UI around in QT Creator?
我正在做一个项目,我必须对ZORK这样的基于文本的游戏进行GUI化。该项目的目标是学习C++和事件驱动编程,游戏是否好并不重要。我们已经得到了游戏代码的骨架。
所以我有一个UI类GameWindow和一个包含游戏逻辑的类。我希望游戏逻辑类从类中向UI写入一些文本。将UI公开并传递一个UI对象以直接访问屏幕上的标签(这不是破坏了封装吗?):
ui->welcomeText->setText("Welcome to the land of the text adventure!");
或者,对于一个私有UI对象,最好有很多getter和setter,在这个对象中,你可以选择gamewindow类的一个对象,然后说:
gamewindow.setWelcomeText("Welcome to the land of the text adventure!");
我对C++和设计阶段都很陌生,我不想过早地搞砸,为自己创造更多的工作。对此提供一些指导将不胜感激。
分离UI和Worker是一种很好的做法。有几种方法可以使用。
您可以在游戏和ui之间使用信号槽通信。请参阅boost::signals。如果你使用Qt,那么你也可以使用他们的信号槽机制。
您可以使用回调。
您可以使用类似Java的侦听器和事件。
class GameEvent{}
class GameListener{
void event( GameEvent const& );
};
class Game{
void addListenter( GameListener* );
void removeListenter( GameListener* );
};
你可以将一个界面传递到游戏引擎中。
class Game {
void setUI( GameUI & );
}
将ui与worker分离到不同的线程中是非常好的。在qt中,可以使用slot/signal概念,这很容易。
相关文章:
- C++:将控制台输出存储在宏中更好吗
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 初始化具有非默认构造函数的std::数组项的更好方法
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么新的随机库比std::rand()更好
- 寻找一种更好的方法来表示无符号字符数组
- 哪种方法更好,性能明智
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 什么是更好的做法?通过指针或标识符传递类成员?
- 寻求更好地理解标准::访问
- 线程消息传递或更好:在"大师班"中访问其他班级的成员
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 如何更好地检查两个 char 变量是否在一组值中?
- 有没有更好的方法对C++中的三个整数进行排序?
- 什么模板用法在阶乘中更好
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 我们应该如何使用枚举类进行索引(或者我们应该更好地避免这种情况)?
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 更好的文本UI调试C++器,如python的pudb
- 是封装UI更好,还是在QT Creator中传递一个指向UI的指针更好