我正在使用三个库ITK VTK
和Qt
制作应用程序。由于我想要事件循环中的所有功能以及信号和插槽的连接,所以我在QMainWindow定义下定义了所有功能。现在mainwindow对象变得笨重,我试图为不同的功能制作不同的类,但是main.cpp
模块化的想法中的所有东西都在缺失。你能否建议一个程序的结构应该如何?
答案 0 :(得分:3)
我在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
相关的任何工作的课程,如果它们变得笨重,则细分这些课程。