2012-03-13 8 views
2

저는 신청서에서 Qt와 직면 한 문제에 대한 초보자입니다. 그래서 여기에 내가하려고하는 것이 있습니다.QWidget이 전체 화면에 나타나지 않습니다.

부모 클래스로 QWidget이 있습니다. 이 클래스에는 격자 레이아웃이 있습니다. 이 위젯을 메인 윈도우의 중앙 위젯으로 설정했습니다. 이 위젯이 메인 윈도우의 중앙에 있지 않아도 괜찮습니다.

이제 가로 모드에서 장치에 표시 될 수 있도록이 위젯을 90도 회전하고 싶습니다. 그래서 그래픽 뷰를 만들고이 위젯을 추가했습니다. (그 장면에 추가 된 장면을 작성하고 지정된 장면을 보았습니다.)이 그래픽보기는 회전되어 중앙 위젯이되었습니다. 이것은 놀랍게도 효과가 있었고 매우 잘 중심에 있고 장치에서도 좋았습니다.

그러나 마지막 통합에서 우리는 모든 QWidget을 갖고 싶어서 Graphics View는 옵션이 아닙니다. 이 문제를 해결하기 위해 클래스 내에서 Qwidget 멤버를 만들었습니다. 그것에 레이아웃을 적용했다. 이 위젯을 graphicsView에 추가하고 클래스를 부모 클래스로 만들었습니다.

이 방법도 작동하지만 첫 번째 단계에서 직면 한 유사한 문제가 있습니다.이 문제는 MainWindow의 왼쪽 위 모퉁이에 위치하고 센터로 조정되지 않습니다. 일을 더욱 악화시키기 위해, 장치에 배치 할 때 전체 화면에 적용되지 않았습니다. 위젯은 왼쪽 상단 영역의 일부에 앉아 있었고 스크롤 막대가있었습니다. 나는 심지어 창 상태를 최대화하려고 시도했지만 아무런 효과가 없었다. 여기

내가 위젯 내 클래스 내에서 생성되고 그래픽보기에 추가 된

을 시도하는 것이다. 이 뷰에는 부모 클래스로 클래스가 있고 rotate API를 사용하여 회전됩니다.

m_gridContainer = new QWidget(); 
m_gridContainer->setAutoFillBackground(true); 
m_gridContainer->setPalette(blackPalette); 
m_gridContainer->setLayout(m_grid); 
m_gridContainer->setMinimumSize(480,265); 

m_scene = new QGraphicsScene(0, 0, 480, 265); 
m_window = new QGraphicsView(m_scene,this); 
m_scene->setBackgroundBrush(brush); 
m_window->setAlignment(Qt::AlignCenter);  
m_scene->addWidget(m_gridContainer,Qt::Widget); 

은 (단지 작은 지역에서) 내가하지만이 위젯은 전체 화면을 표시하지 않을 수 있습니다 어떤 시도
m_window = new CMyWidget(label, m_txtBox->text());  
m_window->getRotatedWidget(90); 
setCentralWidget(m_window); 

메인 창

에서 사용하고 여전히에 스크롤 막대를 이동하십시오. 거기 정확히 무슨 일이 일어나고 있는지 나는 모른다.

답변

2

m_gridContainer은 그래픽 장면의 그래픽 항목으로, 기본 창의 크기 조정 이벤트를받지 못합니다.

CMyWidget에서 resizeEvent()을 처리하고 이에 따라 m_gridContainer 크기를 조정해야합니다. 모바일 장치에서 사용하기 위해 회전을 처리하는 경우

void CMyWidget::resizeEvent (QResizeEvent * event) 
{ 
    m_gridContainer->resize(event->size()); 
} 

BTW, 그것은 (단순히 메인 창 크기를 조정하여) Qt는 자체에 의해 관리됩니다. 코드에서이 작업을 수행 할 필요는 없습니다 (실제로 두 번 회전 한 것처럼 보이는 위젯으로 끝납니다).

+0

고마워요! 크기 조정 이벤트가 나를 위해 일했습니다. 게다가 내 위젯 크기도 엉망 이었어. :) 그것은 지금 모두 소트되었습니다. 메인 윈도우의 크기가 어떻게 조정되는지보고 싶습니다. 그물에 사용할 수있는 예제가 있습니까? 이 제품은 모바일 용 (맞춤형 장치)이 아니지만 Qt가 나를 위해 할 수있는 것이라면 확실히 내 회전 논리보다 성능이 좋습니다! 가능한 샘플이 있으면 알려주십시오. 고마워, 백만. :) – AmitTheInfinity

+0

글쎄, 실제로는 크기를 처리하는 Qt가 아닙니다. Qt는 OS에서 일종의 크기 조정 이벤트를 수신하고이를 위젯에 전파합니다. – Koying

+0

확인. 우리의 경우에는 그렇게되지 않을 것 같습니다. 동료들과 마찬가지로 우리는 그런 사건을 겪지 않으므로 우리 스스로 스스로해야합니다. 그래서 저는 이전의 해결책을 고수 할 것입니다. 감사. :) – AmitTheInfinity

관련 문제