gpt4 book ai didi

c++ - QT代码的组织

转载 作者:行者123 更新时间:2023-11-30 04:25:56 26 4
gpt4 key购买 nike

我正在编写一个中等大小的应用程序。我会有很多 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/

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