我正在写一个中等大小的应用程序。我会有很多gui组件和很多类。但是,我很难组织代码,分离逻辑,......例如,假设我按下一个按钮,该按钮创建一个类的对象并对该对象执行计算。在退出按钮的槽功能后,该本地对象被销毁。如果我以后需要另一个功能呢?在头文件中将全部变量定义为全局变量对我来说不是一件好事。所以我想到了一个静态类,它包含了我稍后需要的所有对象的指针。有人有更好的主意吗?组织的QT代码
组织的QT代码
回答
如何管理应用程序内的对象始终是一个棘手的问题 问题。 Qt进入了一个非常面向对象的路线,并使用通过指针实现的几乎所有内容的参考 语义。到 防止繁琐的手动内存管理Qt将所有东西组织成 Object Trees。这 增加了Qt自己的 object model,它增加了 一些动态功能。
如果你想沿着这条路线走下去,坚持Qt提供的一切。它 比通常的C++方法更类似于Java,可能是 更适合初学者,也可能适合您的应用 域。它将你的代码与Qt紧密结合在一起,并且将难以与它分离开 。
另一种方法是简单地放弃所有Qt的东西,并计算出应用程序的核心逻辑 。使用纯C++进行开发,而不是使用通过 信号和插槽将此逻辑连接到Qt应用程序的薄层。在这种方法中,你会选择使用更多的价值语义。
对于创建一个算法并保持 的具体示例。 Qt方法:
class MyAlgo : public QObject {
Q_OBJECT
public:
MyAlgo(QObject* o) : QObject(o) { }
virtual compute();
};
// use it in a mainwindow slot
void MainWindow::executeAlgorithm(const QString& name) {
MyAlgo* algo = this->findChild<MyAlgo*>(name);
if(!algo) {
// not found, create
algo = new MyAlgo(this); // make mainwindow the parent of this algo
algo->setName(name); // QObject name property
}
algo->compute();
}
感谢QT方法,但我正在使用C++寻找一个通用方法。例如,我听说Singleton模式足以让事物具有全局性。然而,有缺点......但在这一点上,我需要使用它,因为除此之外,你可以保存你的东西吗?在OOP中,你有对象与他们的状态,或者你以某种方式做一个分布式系统,在这个系统中对象可以相互通信(但我不知道如何实现这个目标),或者你保持中心:Singleton模式的全局方法。 – ISTB 2012-08-08 09:01:21
@ISTB为什么不只是将查找缓存作为MainWindow类或'QApplication'子类的成员?这听起来对我来说是个好地方。 – pmr 2012-08-08 12:56:52
我只是想在面向对象的编程中组织这个cose最好的方法是什么。而且,只要我知道,设计模式应该有所帮助。在这种特殊情况下,Singleton似乎是完美的,但我不确定是否有更好的解决方案。如果我继承QApplication,我会遇到同样的问题,但只是在另一个地方...... – ISTB 2012-08-09 10:04:03
- 1. 代码组织
- 2. 组织代码
- 3. 组织javascript代码
- 4. 组织C++代码
- 5. php代码组织
- 6. jquery代码组织
- 7. Django代码组织
- 8. 组织CakePHP代码
- 9. 代码组织Matlab
- 10. python代码组织
- 11. WordPress代码组织
- 12. 组织代码 - JavaME
- 13. C++中的代码组织
- 14. LWJGL的组织代码
- 15. 组织代码的轨迹
- 16. 组织HTML中的代码
- 17. 组织重构的代码
- 18. C#组织我的代码
- 19. mvc中的代码组织
- 20. RestKit中的代码组织
- 21. 什么是组织Qt代码的标准方式?
- 22. 如何组织rebol代码?
- 23. 如何组织代码包
- 24. 组织代码视图
- 25. CSS代码组织技巧
- 26. 援助与代码组织?
- 27. CSS转换代码组织
- 28. Maven和Eclipse代码组织
- 29. 组织大块代码
- 30. Backbone.js and rails代码组织
当你说“对象”时,你是指'QObject'实例吗?这些通常是用'new'构造的,因此不会自动销毁,除非显式地删除''或者'QObject :: parent()'被销毁。所以你通常在'QObject'层次上做你的记录:保持对子对象的引用,并且遍历对象层次结构以随时访问对象。 – 2012-08-07 13:55:48
不,我的意思只是一个自定义类的对象。假设我正在创建A类的局部对象。一旦退出函数,该对象就会被销毁。所以你需要把他留在某个地方。在一个Gui应用程序中,一切都是分布式的,并且取决于事件......我正在寻找组织我的代码的最佳解决方案。我想避免只有一个类(我的主类)在其中存储所有内容 – ISTB 2012-08-07 14:00:45