저는 신청서에서 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);
메인 창
에서 사용하고 여전히에 스크롤 막대를 이동하십시오. 거기 정확히 무슨 일이 일어나고 있는지 나는 모른다.
고마워요! 크기 조정 이벤트가 나를 위해 일했습니다. 게다가 내 위젯 크기도 엉망 이었어. :) 그것은 지금 모두 소트되었습니다. 메인 윈도우의 크기가 어떻게 조정되는지보고 싶습니다. 그물에 사용할 수있는 예제가 있습니까? 이 제품은 모바일 용 (맞춤형 장치)이 아니지만 Qt가 나를 위해 할 수있는 것이라면 확실히 내 회전 논리보다 성능이 좋습니다! 가능한 샘플이 있으면 알려주십시오. 고마워, 백만. :) – AmitTheInfinity
글쎄, 실제로는 크기를 처리하는 Qt가 아닙니다. Qt는 OS에서 일종의 크기 조정 이벤트를 수신하고이를 위젯에 전파합니다. – Koying
확인. 우리의 경우에는 그렇게되지 않을 것 같습니다. 동료들과 마찬가지로 우리는 그런 사건을 겪지 않으므로 우리 스스로 스스로해야합니다. 그래서 저는 이전의 해결책을 고수 할 것입니다. 감사. :) – AmitTheInfinity