2011-07-30 1 views
1

웹 브라우저를 첫 번째 Qt 프로젝트로 만들었습니다. 놀랍습니다. 왜 setWindowState(Qt::WindowMaximized)을 호출하면 창 지오메트리가 변경되지 않는지 궁금합니다. mainwindow.h에서Qt Window 기하 도형을 변경하지 마십시오 (C++)

: mainwindow.cpp에서

namespace Ui { 
    class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit MainWindow(QWidget *parent = 0); 
private: 
    Ui::MainWindow *ui; 
}; 

:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    // this->geometry() is the same here... 
    setWindowState(Qt::WindowMaximized); 
    ui->webView->setGeometry(0, 60, geometry().width(), geometry().height()-60); 
    // ...as it is here. 
} 

것은 당신이, 내가 가진 응용 프로그램을 시작하기 위해 노력하고있어 말할 수 있습니다으로이 코드를 창이 최대화되고 QWebView도 최대화됩니다. 기본적으로 메인 윈도우의 크기가 변경 될 때마다 업데이트 높이와 너비로 ui->webView->setGeometry을 호출하기를 원합니다. 하지만 MainWindow::geometry은 업데이트되지 않는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

두 번 확인해야하지만 기본 창이 쇼 이벤트를 수신 할 때까지 지오메트리가 제대로 업데이트되지 않을 수 있습니다.

그러나 QWebView를 기본 창 크기가 변경 될 때마다 수동으로 크기를 지정하는 대신 배치하는 것이 좋습니다.

+0

좋습니다,이 경우 그리드 레이아웃이 가장 적합할까요? – Nick

+0

QBoxLayout 또는 QStackedLayout을 사용하면 문제가 없습니다. 60 픽셀 여백은 부모 위젯의 setContentsMargins() 함수로 설정할 수 있습니다. –