2012-07-23 2 views
4

제 애플리케이션에서는 Qt 크리에이터 2.4.1을 사용하여 3 개의 페이지가있는 QTabWidget을 설계했습니다. 이제 새 클래스를 만들어 MainWindow에서이 페이지의 기능을 분리하고 싶습니다.Qt 메인 윈도우 클래스에서 탭 페이지의 기능을 분리하는 방법

제 질문은 내 새 클래스의 MainWindow :: ui 인스턴스에 액세스하는 방법입니다. 이는 사적으로 선언된다.

IT는 Qt는 데스크톱 응용 프로그램입니다 및 플랫폼은 Qt는 4.8.1/7

+1

탭 내에서'MainWindow :: ui'에 액세스해야한다면 실제로 기능을 분리하지 않았습니다. 이것은 디자인을 조금 더 재고하면 좋은 생각 일 수 있습니다. – tmpearce

+0

예 기능을 분리하지 않았습니다.이를 달성하기위한 설계 제안이 있습니까? – Prady

+0

그 방법에 대한 자세한 내용은이 포럼 유형의 범위를 훨씬 뛰어 넘습니다. 더 많은 것을 알지 못하면 아무에게도이를 수행 할 방법을 말할 수 없습니다. 먼저 "탭에서 메인 UI에 대해 알아야합니까?"라는 질문을 시작하십시오. 그런 다음 알아야 할 사항을 탭 자체로 옮기거나 함수 (또는 '신호/슬롯'연결)를 통해 정보를 전달할 수 있습니다. – tmpearce

답변

1

당신은 직접 탭에서 MainWindow를의 UI에 액세스 할 수 없습니다 승리입니다. 귀하의 QTabWidget이 MainWindow의 자식이므로 (이것은 구현되어야하며 그렇게했음을 가정합니다).

신호와 슬롯으로 이것을 달성 할 수 있습니다. 개별 탭에서 방출 된 신호에 슬롯을 작성하여 MainWindow에서 작업을 수행 할 수 있습니다.

또는

당신이 UI가의에서 작동합니다 MainWindow를의 방법을 쓸 수 있습니다. 탭 위젯에서 다음과 같이 호출하십시오 :

this->parent->parent->uiMethod(); 

// this(Tab) -> parent(QTabWidget) -> parent(MainWindow) -> [related method] 
+0

이 세 탭 페이지에 많은 컨트롤이 있기 때문에 이미 많은 컨트롤에 대한 신호와 슬롯을 사용하고 있습니다. MainWindow.cpp는 모든 컨트롤에 대해 구현 된 코드로 크게 종료되었습니다. 그래서 각 탭에 대한 기능을 분할하고 싶습니다. 내 문제를 해결할 두 번째 솔루션에 대해 확신하지 못합니다. 또는 귀하의 솔루션을 이해하기 위해 무엇인가 놓치고 있습니까? – Prady

+0

개별 탭에 컨트롤이있는 경우 해당 탭에서 컨트롤을 처리 할 수 ​​없습니까 ?? MainWindow에 대한 신호와 슬롯의 의존성을 줄여보십시오. – EngineeredBrain

+0

자, 이제 모든 컨트롤이 포함 된 UI 파일이 하나 있었는데 이제는 기능을 별도의 클래스로 분리했으며 이제 신호와 슬롯을 유지 관리하기 쉽습니다. 감사. – Prady