c++ - C++/QT 中更大项目的结构

标签 c++ qt c++11 structure qwidget

<分区>

我打算开始一个中等规模的 C++/Qt 爱好项目。我想尝试制作具有一些高级功能的音乐播放器,例如音乐库、ID3 标签编辑器和接收流的基本支持(想想 WinAmp 和 VLC 的交叉)。

我可以在 QtCreator 中将整个东西设计到一个 ui 文件中,但那样我会得到一个巨大的类,这当然不是很好。

或者我可以将 GUI 的每个元素设计为一个小部件,每个元素都在其 ui 文件中。然后每个 ui 文件都有一个工作类,我将使用布局创建小部件的层次结构。

第二个解决方案似乎不错,但我害怕处理窗口调整大小之类的事情。

使用 Qt 制作更复杂的应用程序时,最佳实践是什么?您能给我推荐一篇文章或一个开源项目吗?

感谢所有建议!

最佳答案

更大的 UI/GUI 项目不是简单的 UI 文件,但更常见的是“从代码构建 ui”。

想象一下这样的事情:

.
└── MyProject
    ├── CoreSystem \ *.cpp *.h
    ├── MusicControler \ *.cpp *.h
    └── UI
        ├── CoreUi \ *.cpp *.h
        └── MusicUI
            ├── PlayListUI \ *.cpp *.h
            └── EqUI \ *.cpp *.h

还有更多,还有更多。

想法只是将程序的一些“部分”分成更小的 block ,这样您就可以更好地控制它们的外观和工作方式。

使用 Qt 信号/槽系统,您可以分离越来越多的东西,包括一些设计模式,您可以将您的项目扩展到附加功能,如插件?

这必须从更大的范围来看,弄清楚 UI 部分将是什么,“核心”(后端引擎)功能必须具有什么,以及许多其他事情。

例如“皮肤”——它们必须放置在某个地方,皮肤必须要设置一些变量 + 一些解析器? (更简单的方法是使用“编码的”css 名称)。

确实很难满足您的需求,但应用程序的大部分 UI 并不是在 QtCreator 中设计的 UI 文件,而是通过代码手动制作的。

如果您真的喜欢在编辑器中创建 UI,请使用 QStackedWidget。

关于c++ - C++/QT 中更大项目的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996539/

相关文章:

c++ - 使用 CascadeClasifier 与 FaceRecognizer (FisherFace) 的 OpenCV 性别分类

c++ - 这是在 Qt 信号和槽中调用带有参数的函数的好方法吗

c++ - 转换运算符与删除的构造函数

c++ - 将多个内部类型转换为系统级类型

c++ - 对 C++ 异常处理很困惑

c++ - 理解左值概念

c++ - 我是否正确理解指针? C++

qt - 为什么在更改 Qt .pro 文件中的某些内容后需要删除构建目录?

c++ - 使用QT在屏幕上绘制文本

c++ - openann C++编译失败