我正在编写一个中等大小的应用程序。我会有很多gui组件和很多课程。但是,我很难组织代码,分离逻辑,...例如,假设我按下一个按钮,创建一个类的对象并对该对象执行计算。退出按钮的插槽功能后,该本地对象将被销毁。如果我以后需要在另一个功能中怎么办?将所有内容定义为头文件中的全局变量对我来说不是一件好事。所以我想到了一个静态类,它包含了稍后我需要的所有对象的指针。有没有人有更好的主意?
答案 0 :(得分:2)
如何管理应用程序内的对象总是很棘手 题。 Qt沿着面向对象的路线走下去并使用参考 语义通过几乎所有的指针实现。至 防止繁琐的手动内存管理Qt组织所有内容 Object Trees。这个 由Qt自己增强 {}增加了object model 一些动态能力。
如果你想沿着这条路走下去,坚持Qt提供的一切。它 与通常的C ++方法相比,Java更类似于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();
}