2012-12-29 3 views
3

를 사용 Qt는, C++는 그래서이에 대한 나의 지식은 정말 깊은되지 않습니다. 나는 단순한 작업 관리를 썼다. 그것은 물론 콘솔 애플리케이션이다. MVC 패턴 (컨트롤러, 뷰, 액션, 모델)과 유사한 로직을 사용했습니다.프로그램을 분할하는 방법 - 난 그냥 QT 배우기 시작 것을 말하고 싶어 처음에는 MVC 논리

예를 들어 사용자 로그인을 예로 들어 봅시다. LoginController 클래스의 인스턴스를 생성 한 다음 LoginController는 사용자가 데이터를 입력하기를 기다리는 LoginView의 인스턴스를 생성합니다 - 로그인, 암호. 로그인 및 암호는 LoginView 구성원으로 저장됩니다. 그런 다음 LoginController에서이 데이터를 읽고이를 매개 변수로 UserVerificationAction 생성자에 전달합니다. 이 클래스의 생성자는이 데이터를 해당 클래스의 멤버로 저장합니다. LoginController에서 다음으로 UserVerification 클래스의 메소드를 호출한다. action()은 로그인과 패스워드를 검증한다. 그런 다음 유효성 검사 결과에 따라 MenuController 또는 LoginFailiedView 인스턴스를 만듭니다. 이 메커니즘은 프로그램 전반에 걸쳐 사용자 (CreateUserController, AddTaskController) 등입니다. 가상 메서드를 사용하여 MenuController가 약 20 줄의 코드로 구성되어 있으며 읽기가 매우 쉽습니다.

는 내가 신호와 슬롯 메커니즘을 사용하려면 더 정확하게하기 위해 GUI를 구현하는 Qt를 사용하려는하지만 딜레마가있다. 어쩌면 LoginView 클래스에서 슬롯을 만든 다음 액션 인스턴스를 생성하는 대신 LoginView 멤버에 입력 된 데이터를 전달한 다음 LoginController에서 인스턴스 클래스를 생성합니다. 어쩌면 이것을 할 수있는 더 좋은 방법이 있습니다. 난 당신이 내가 제대로

추신 그것을 할 방법에 대한 몇 가지 도움말을 나에게주고 싶어 내 영어

답변

0

Qt는 죄송 는 Model/View 아키텍처를 제공합니다.
모델,보기 및 위임 등 3 가지 클래스를 도입하여 데이터를 저장, 표시 및 편집합니다.

나는 그것이 당신이 찾고있는 것이라고 믿습니다.

1

Qt에서 "컨트롤러"의 개념이 약간 희미합니다. 그것은 모델과 뷰의 일부인 경향이 있습니다. 그렇다고해서 모델을 연결하고 로직을 볼 수있는 컨트롤러를 작성할 수 없다는 의미는 아닙니다.

은 일반적으로 당신이 볼 것은 그 행동에 대한 신호를 방출하는 도면이다. 그런 다음이 슬롯을 직접 모델 또는 슬롯을 작성한 하위 클래스의 호환 슬롯에 연결합니다.

예를 들어 메인 창이있는 경우. 이 창은 모델 및 뷰를 자식으로 만들 수 있습니다. 그런 다음 모델과 뷰 사이를 연결하는 창 하위 클래스의 슬롯을 정의 할 수 있습니다. 이것은 윈도우가 뷰와 컨트롤러임을 의미합니다.

관련 문제