gpt4 book ai didi

c++ - 在 QT Creator 中封装 UI 还是传递指向 UI 的指针更好?

转载 作者:行者123 更新时间:2023-11-28 07:45:44 26 4
gpt4 key购买 nike

我正在从事一个项目,我必须对 ZORK 等基于文本的游戏进行 GUI 化。该项目的目标是学习C++和事件驱动编程,游戏好不好无所谓。我们已获得游戏代码的骨架。

所以我有一个 UI 类 GameWindow 和一个包含游戏逻辑的类。我希望游戏逻辑类从类中向 UI 写入一些文本。公开 UI 并传递 UI 对象以直接访问屏幕上的标签是否是好的设计(这不会破坏封装吗?):

ui->welcomeText->setText("Welcome to the land of the text adventure!");

或者为私有(private) UI 对象设置大量 getter 和 setter 是否更好,您可以在其中获取 gamewindow 类的对象,然后说:

gamewindow.setWelcomeText("Welcome to the land of the text adventure!");

我真的是 C++ 的新手,在设计阶段,我不想早早搞砸并为自己创造更多的工作。我们将不胜感激。

最佳答案

将 UI 和 Worker 分开是一种很好的做法。您可以使用多种方法。

您可以在游戏和用户界面之间使用信号槽通信。见boost::signals .如果您使用 Qt,那么您还可以使用它们的信号槽机制。

您可以使用回调。

您可以使用类似 Java 的监听器和事件。

class GameEvent{}
class GameListener{
void event( GameEvent const& );
};
class Game{
void addListenter( GameListener* );
void removeListenter( GameListener* );
};

您可以将接口(interface)传递给游戏引擎。

class Game {
void setUI( GameUI & );
}

关于c++ - 在 QT Creator 中封装 UI 还是传递指向 UI 的指针更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911227/

26 4 0
文章推荐: html - 在电子邮件签名中使用高级 ccs 图标
文章推荐: html - 如何防止在div中旋转文本?
文章推荐: javascript - 当我向下还原页面时,很少有
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com