我正在编写一个中等大小的应用程序。我会有很多 gui 组件和很多类。但是,我很难组织代码、分离逻辑……例如,假设我按下一个创建类对象的按钮并对该对象执行计算。退出按钮的槽函数后,这个局部对象就被销毁了。如果我以后在另一个函数中需要它怎么办?在头文件中将所有内容定义为全局变量对我来说不是一件好事。所以我在考虑一个静态类,它以某种方式包含指向我稍后需要的所有对象的指针。有人有更好的主意吗?
最佳答案
如何在应用程序内部管理对象总是一个棘手的问题 问题。 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();
}
关于c++ - QT代码的组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846771/