나는 몇 초마다 직렬 포트에서 일련의 값을 읽은 GUI 기반 응용 프로그램을 작성 중이며 범위를 표시하는 일부 유형의 그래픽 표시기 (QprogressBar를 생각했을 수도 있음)에 값의 대부분을 표시해야합니다. 값. 문자열에서 파싱하는 다른 데이터 중 일부는 날짜 및 오류 코드입니다. 또한 데이터는 계층 적입니다.Qt Model/View 아키텍처가 유용하지 않은 상황입니까?
Qt의 모델/뷰 아키텍처를 사용하고 싶었습니다. 잠시 MVC에 관심이 있었기 때문에 매우 잘 구현 한 방법을 두뇌로 감싸지 않았습니다.
현재로서는 QAbstractItemModel을 서브 클래 싱했으며 모델에서 직렬 포트를 읽고 트리 데이터 구조의 문자열에서 파싱 된 항목을 래핑합니다. 문제없이 QtreeView의 모든 데이터를 볼 수 있습니다.
QAbstractItemView를 하위 클래스 화하여 모든 그래픽 지표와 함께 사용자 정의보기를 빌드하기 시작했습니다. 이것은 내가 붙어있는 곳입니다. 내 사용자 지정 모델을 표시하는 방법을 알고있는 뷰를 디자인하려면 모델의 모든 데이터가 구성되는 방식을 정확하게 파악해야합니다. 모델/뷰의 목적을 무력화하지 않습니까? 모델을 테스트 한 QTreeView는 기본적으로 모델을 Tree 구조의 설정대로 표시하지만 데이터가 모두 같은 유형이 아니기 때문에 모델을 테스트하지 않습니다. 이 아키텍처를 사용해야하는지 여부를 결정하는 요인 인 데이터 유형 또는 사용자에게 표시하려는 방식입니까? 나는 항상 MVC 스타일로 디자인하는 것이 항상 더 좋다고 생각했다.
QWidget을 하위 클래스로 분류 한 다음 직렬 포트에서 읽고 서브 클래스의 모든 하위 위젯 (그래픽 표시기, 레이블 등 ...)을 업데이트하는 것이 좋을 것 같습니다. 본질적으로 모든 것을 하나의 클래스로 수행하십시오.
누구나 내가 누락 된 부분이나 내가 이런 식으로해서는 안되는 이유를 설명 할 수있는이 문제를 이해하고 있습니까? 지금 나는 조금 혼란 스럽다.
도움을 주셔서 감사합니다.
정말 고마워. 도움이됩니다. 내가 분명히하자. 10 개의 전압, 10 개의 온도, 날짜/시간 및 3 개의 상태 코드가 직렬 포트에서 수신 된 문자열을 구문 분석한다고 가정 해보십시오. 이제는 데이터를 가져 와서 트리, 목록, 테이블 또는 원형 차트에 넣고 싶지 않습니다. 대신 나는 볼트와 템프의 그래픽 표시기, 시간을 표시하는 레이블, 상태 코드의 레이블 및 다른 계산 된 값의 레이블을 갖고 싶습니다. 모델에서 정확히 무엇이 나오는지 알 필요가있는 것처럼 사용자 정의보기처럼 보입니다. 그래서 MVC가 여전히 그 상황에서 유용할까요? 말이 돼? – csmithmaui
예 MVC는 여전히 좋은 패턴입니다. 컨트롤러 레이어는 프레젠테이션을보기 (게이지)하기 위해 판독 값 (모델)을 통합하기 때문에. 모든 복잡한 데이터 조작 논리를 컨트롤러 레이어에 넣으면 단순한 모델 및 뷰 레이어가 남습니다. 그리고 라이브 데이터에 연결할 필요가 없으므로 완전히 테스트 할 수있는 컨트롤러 레이어. 너 시작하면 잔인한 것처럼 보일거야. 그러나 일단 그것을 이해하기 시작하면 실제로 많은 의미가 있습니다. –
쿨 ... 도와 줘서 고마워. 당신의 도움과 많은 독서로 나는 조금 더 잘 이해하기 시작했다고 생각합니다. – csmithmaui