2014-05-15 1 views
1

Qt Designer에서 만든 기본 창 UI 파일이 있습니다. 혼란을 피하고 더 모듈화 된 코드를 만들기 위해이 윈도우의 일부분을 개별 UI 파일에 만들고 싶습니다.여러 ui 파일간에 Qt 양식 분할

예를 들어 기본 창에 탭 위젯이있을 수 있으며 별도의 page1.ui와 page2.ui를 갖고 싶습니다. 그러면 기본 창 안에 "포함"할 수 있습니다.

UI 파일로만 가능합니까? 아니면 위젯을 추가 할 때마다 클래스를 만들어야합니까?

내가 그 클래스에 메인 윈도우의 자리 위젯을 추진 한 후 공개적으로 qmake에 의해 생성 ui_page1.hui_page2.h에서 상속 별도의 클래스 Page1UIPage2UI을 (그들 내부의 위젯을 쉽게 기본 창에서 액세스 할 수 있도록) 작성 및에 대해 생각했다

. 그래서 코드에서 나는 예를 들어 이런 일이있을 것이다 : Qt는 documentation가 나는 이것이 올바른 접근 방식인지 궁금 있도록 공공 상속을 언급하지 않는 것 같습니다 그러나

connect (page1->ui->someButtonFromPage1uiFile, ..., this->ui->someMainWindowWidget, ...); 

간단한 방법이있을 수 있습니다합니다.

+0

표준 QWidget을 해당 위치에 넣으려는 유형으로 "승격"하여 사용자 정의 QWidgets를 사용할 수 있습니다. –

+0

@ratchetfreak 나는이 질문에서 그렇게 말했습니다. 나는 각 UI 파일에 대해 별도의 파일을 생성해야하거나, 어떻게 든 서로 직접적으로 임베드 할 수 있는지 궁금하다. b) 내 사용자 정의 위젯을 만드는 공용 상속 OK 방법입니다. – jaho

답변

1

이 작업을 위해 상속 할 필요가 없습니다. 이러한 UI 파일은 위젯 일뿐입니다. 물론 그렇게 할 수 있습니다. 탭 위젯을 가질 메인 클래스가 있어야하고 메인 탭 위젯에 page1, page2 등을 추가하면됩니다. 당신이 필요로하는 것은 내 의견으로는 여기에 구성입니다.

생성 된 UI 양식의 개체가 포함될 QWidget에서 파생 된 별도의 클래스를 만드는 것이 필요합니다. this을 매개 변수로 사용하여 새 클래스에서 생성 된 양식 setupUI()에 전화해야합니다.

+0

기술적으로, 메인 윈도우의 위젯 중 하나를 다른 위젯으로 승격시키는 방법은 무엇입니까? 'ui_form.h'를 생성하는'form.ui'을 가지고 있다고 가정 해 봅시다. 위젯을'Ui_Form' 클래스로 승격 시키려고했지만'Ui_Form'이'QWidget'이 아니라는 몇 가지 오류가 있습니다. – jaho

+0

@Marian 답변에 세부 사항을 추가했습니다. –

+0

예, 맞습니다. 그래서 내 QWidget 파생 클래스에서 UI 양식이 구성원이어야합니까? 그렇지 않으면 public 또는 private 상속을 통해 파생되어야합니까? 개인 회원으로 만들면 기본 창 클래스에서 직접 액세스 할 수 없습니다. – jaho