0

3 つのライブラリITK VTKQt. イベントループとシグナルとスロットの接続にすべての機能が必要なので、すべての機能を QMainWindow 定義の下に定義しました。mainwindow オブジェクトがかさばり、機能ごとに異なるクラスを作成しようとしましたが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 に答える