0

我正在使用三个库ITK VTKQt. 因为我想要事件循环中的所有功能以及信号和插槽的连接,所以我在 QMainWindow 定义下定义了所有功能。现在主窗口对象变得笨重,我尝试为不同的功能创建不同的类,但是main.cpp模块化理念中所有混乱的东西都不见了。你能建议一个程序的结构应该如何吗?

4

1 回答 1

4

main.cpp除了创建和展示我的QMainWindow,然后调用之外,我很少有其他事情app.exec()

如果您QMainWindow开始变得庞大,那么这意味着您可能应该将此代码组织成不同的连贯类(而不是将其移动到main.cpp. 基本思想是更改如下所示的代码:

class MainWindow : public QMainWindow
{
public:
    void doSomething();
    void foo1();
    void foo2();
    void foo3();
    void bar1();
    void bar2();
    void bar3();

private:
    // ...
}

对于如下所示的代码:

class Foo:
{
public:
    void doSomething1();
    void doSomething2();
    void doSomething3();

private:
    // ...
}

class Bar:
{
public:
    void doSomething1();
    void doSomething2();
    void doSomething3();

private:
    // ...
}

class MainWindow : public QMainWindow
{
public:
    void doSomething();

private:
    Foo foo_;
    Bar * bar_;
    // ...
}

您如何选择课程Foo以及您的Bar哪些成员MainWindow转移到这些新课程当然取决于您的上下文。但想法是巧妙地组织你的代码,让每个类都有一个“职责”,然后MainWindow可以将每项工作委托给负责这项工作的类。就像在房子里一样,有电工管理电力,管道工管理水等等……而管家的职责只是召集合适的人做合适的工作。在您的情况下,您可能希望一个类执行与 相关的任何工作ITK,以及一个执行与 相关的任何工作的类VTK,然后如果它们也变得庞大,请细分这些类。

于 2013-06-13T06:29:38.750 回答