gpt4 book ai didi

gtk - 清理 GTKmm 应用程序的代码

转载 作者:行者123 更新时间:2023-12-02 08:55:59 30 4
gpt4 key购买 nike

大约 6 个月前我启动了一个 GTKMM 应用程序,它已经达到了一切正常的地步,我实际上每天都在使用它。它本质上是一个数据库应用程序,可以从另一个应用程序读取数据文件、生成图形并让您轻松地对数据进行排序和查看。我喜欢它。

但是,我认为我的代码一团糟,当我今天去实现另一个功能时,我意识到我可能在某个地方走错了路。

我的主窗口 GUI 是在一个 glade 文件中定义的,所有 GUI(除了我的绘图小部件,它是一个基于 Gtk::DrawingArea 的自定义小部件)都在一个文件中。它充满了指向小部件和树存储的指针,它们都在构造函数中设置并在析构函数中删除。

整个 GUI 是一个分为不同 Pane 的主窗口,因此将所有内容都放在一个文件中是有意义的。此外,不同的 Pane 需要与其他 Pane “通信”。

我应该如何更好地组织我的代码以使其易于维护?我是否创建一个本质上是小部件集合的新类,然后将该“ super 小部件”放置在我的主窗口中(假设每个 Pane 都是一个 super 小部件)?

GTKMM 教程通常非常简约,所以我无法在那里获得太多见解。

最佳答案

我目前正在开发一个大型 GTKMM 应用程序。整个代码库遵循的一般规则是每个框架(包含小部件的集合)在其自己的 cpp 文件中都是其自己的类。然后,这些类在主函数中作为单例类实例化,每个类都公开一个 getFrame 方法。

// Single instance of this class.
SomeGUIComponent* SomeGUIComponent::m_instance = NULL;

SomeGUIComponent& SomeGUIComponent::getInstance()
{
if (m_instance == NULL)
{
m_instance = new SomeGUIComponent();
}
return *m_instance;
}

Gtk::Frame& SomeGUIComponent::getFrame()
{
return m_myMasterFrame;
}

所以这可以添加到更大的应用程序中:

SomeGUIComponent::getInstance().getFrame()

关于gtk - 清理 GTKmm 应用程序的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4858345/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com