2013-03-21 1 views
1

Qt 양식 클래스 (MyForm)의 QVBoxLayout (verticalLayout_2) 안에 OpenGL 위젯 (myWidget)이 있습니다.Qt 양식 클래스에서 OpenGL 위젯의 크기를 조정하는 방법

양식의 크기를 조정할 때 OpenGL 위젯의 크기를 조정하고 싶습니다.

QVBoxLayout 및 OpenGL 위젯의 크기를 새 크기로 조정하려면 changeEvent 메소드 내에 무엇을 써야합니까?

MyForm::MyForm(QWidget *parent) : 
    QDialog(parent), 
    ui(new Ui::MyForm) 
{ 
    ui->setupUi(this); 
    myWidget = new GL_Widget; 
    ui->verticalLayout_2->addWidget(myWidget); 
    adjustSize(); 
} 

void MyForm::changeEvent(QEvent *e) 
{ 
    // What should I write here? 
} 

답변

1

위젯의 크기를 자동으로 조정할 필요가 없습니다. (changeEvent()은이 목적을위한 올바른 이벤트 처리기가 아닙니다.

Qt Designer로 만든 레이아웃에 문제가있을 수 있습니다. 아마도 세로 레이아웃을 사이드 바에서 양식 위젯으로 드래그했을 것입니다. 실제로는 최상위 레이아웃을 생성하지 않습니다. 이 실수를하는 것은 매우 쉽습니다.

대신 중 하나를 수행 Qt는 디자이너에서 최상위 레이아웃을 생성하려면 다음의

  • 마우스 오른쪽 단추로 클릭 한 오브젝트 인스펙터에서 최상위 (양식) 위젯, 선택 하나 레이아웃 "메뉴에서 레이아웃을 선택합니다.

  • 최상위 위젯을 선택하고 도구 모음에서 레이아웃 아이콘 중 하나를 클릭 :

    qt designe r toolbar

제대로 레이아웃 (들)을 설정 한 경우, 당신은하지 않습니다 코드를 추가해야합니다. Qt Designer에서 양식을 미리 보면 레이아웃이 자동으로 업데이트됩니다.

+0

@jmk에 감사드립니다. Qt Designer에서 양식을 마우스 오른쪽 버튼으로 클릭 한 후 "레이아웃 - 레이아웃 배치"를 선택하여 문제를 해결했습니다. 이제 폼은 changeEvent 메소드를 사용하지 않고 자동으로 크기가 조정됩니다. – Mikael

관련 문제