3 개의 라이브러리 ITK VTK
과 Qt
으로 애플리케이션을 만들고 있습니다. 이후 이벤트 루프 및 신호 및 슬롯의 연결에 모든 기능을 원하므로 QMainWindow 정의에서 모든 기능을 정의했습니다. 이제 mainwindow 객체가 커지면서 다른 기능을 위해 다른 클래스를 만들려고했으나 모든 것들이 엉망이되었습니다. main.cpp
모듈화 아이디어가 없습니다. 당신은 프로그램의 구조가 어떻게되어야한다고 제안 할 수 있습니까?QMainWindow의 신 객체를 없애기
0
A
답변
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_;
// ...
}
가 어떻게 MainWindow
의 클래스 Foo
및 Bar
과 회원을 선택합니까 당신 이러한 새로운 클래스로의 이전은 귀하의 상황에 따라 다릅니다. 그러나 아이디어는 각 클래스가 "책임"을 갖도록 코드를 현명하게 구성한 다음 MainWindow
은 각 작업을이 작업을 담당하는 클래스에 위임 할 수 있습니다. 집에서와 마찬가지로 전기 관리, 수도 관리를위한 배관공 등이 있습니다. 집을 지키는 사람의 책임은 적절한 사람들에게 적절한 일을하도록 전화하는 것입니다. 귀하의 경우, 당신은 아마도 ITK
과 관련된 작업을 수행하고, VTK
과 관련된 모든 작업을 수행하기를 원할 것입니다. 그리고 부피가 커지면이 클래스들을 세분화하십시오.
관련 문제
- 1. QMainWindow의 경우
- 2. QMainWindow의 기존 QMainWindow 열기
- 3. QMainWindow의 Qt 레이아웃
- 4. QMainWindow의 해상도 처리
- 5. Qt : QMainWindow의 크기를 설정하십시오.
- 6. 개발자가 신 클래스/객체를 만들지 않도록 게임 저장을 어떻게 구현합니까?
- 7. nbsp을 없애기
- 8. 신속하게 없애기
- 9. 님이 벽을 좋아하 신
- 10. 신 : 글래스 피쉬 서버
- 11. RVM에서 신 사용하기
- 12. 신 시티 효과
- 13. QMainWindow의 QDockWidget에서 여백 공간을 제거하십시오.
- 14. 이상한 신 [X] 그래프 티카
- 15. 프로그래밍 나는이와 비슷한 코드가 신
- 16. 모든 신 작업 다시 시작
- 17. 잡히지 않는 예외를 없애기
- 18. 문자열에서 따옴표 없애기
- 19. RibbonApplicationMenu : AuxiliaryPane 없애기
- 20. html 테이블의 틈을 없애기
- 21. 자바에서 png의 일부를 없애기
- 22. BDE의 고스트를 없애기
- 23. 하나의 개발자로부터 커밋을 없애기
- 24. 유니 코드 오류를 없애기
- 25. 애니메이션 완료 지연을 없애기
- 26. 오이 스택 추적을 없애기
- 27. `My` 네임 스페이스 없애기
- 28. jsfiddle에서 문자를 없애기
- 29. 생성자 순환 종속성을 없애기
- 30. JLabel 페이드를 없애기
내가 벗고 싶다 –
그리고 내 대답은 당신이 그것을 없애 버리는 방법을 설명하는 것입니다, 그렇죠? 두 버전을 비교해 보면,'MainWindow' 클래스가 전에는 훨씬 더 깨끗하다는 것을 알 수 있습니다. ('Foo'와'Bar' 클래스는 다른 파일로 이동할 수 있습니다). 필연적으로, 코드는 어딘가에 위치해야하며, 컴파일러에 의해 발명되지는 않습니다. 당신의 역할은 그것을 쓰기, 읽기, 그리고 유지하기 쉽게 다른 클래스들 (그리고 따라서 파일들)로 구성하는 것입니다. 자세한 내용은 다음을 참조하십시오. http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep#Architecture – Boris
답변은 내가 실제로 한 것입니다. 하지만 그것이 올바른 방법인지 또는 단일 객체에서 전반적인 일들이 발생하지 않는지 확신 할 수 없습니다. 링크에 대해 고마워. –