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