2012-05-17 5 views
2

C++과 Qt를 처음 사용했기 때문에이 질문을 올바르게 질문하는지 확신 할 수 없습니다.QWidget의 하위 클래스에서 setCentralWidget 사용 하시겠습니까?

class childofqwidget : public QWidget 

내가 QMainWindow의 setCentralWidget 멤버 함수에 대한 하위 클래스의 객체에 대한 포인터를 전달할 수 있습니다하지만, 내가는 QWidget의 서브 클래스가 있다고? 이런 식으로 뭔가 : 나는이 텍스트 상자와 일부 버튼이있는 레이아웃이는 QWidget의 서브 클래스를 만들어했기 때문에

mainlayout = new childofqwidget; 
setCentralWidget(mainlayout); 

내가 부탁 해요 이유입니다. 이 QMainWindow 개체의 중앙 위젯으로 삽입하고 싶습니다. 이것이 가능한가? 없다면 더 나은 방법이 있습니까?

+2

당신은 각각의 새로운 단어를 대문자로 클래스 이름을 명명하는 습관을 얻어야한다. 'childofwidget'의 이름은'ChildOfWidget'이어야합니다. 변수와 메소드 이름은 새로운 단어마다 낮은 문자와 대문자로 시작해야한다.'mainlayout'의 이름은'mainLayout'이어야한다. (이것은 Qt 명명 규칙입니다.) – leemes

답변

5

네, 그게 아주 괜찮아요, 그리고 그것을하는 일반적인 방법입니다.

(그것이 widget 때 변수 layout를 호출하지만 조금/특이한 혼란이지만, 그건 그냥 이름입니다.)

+0

좋습니다. 이 일을 시도하고 컴파일되지 않을 것이다 ... 컴파일러 setCentralWidget 경우에만 형식 (* QWidget) 인수를 받아 들일. 아마 뭔가 잘못 구현 한 것 같습니다. 다시 시도해 보겠습니다 ... – Justin

+0

'mainlayout'이'childofqwidget * mainlayout'으로 선언되어있는 한 당신의 스 니펫이 작동해야합니다. – Mat

+0

굉장합니다. 작동하도록했습니다. 이전 오류는 내 부분의 잘못된 구현 때문이었습니다. 감사. – Justin

관련 문제