2011-07-30 24 views
1

所以我正在做一個網絡瀏覽器作爲我的第一個Qt項目(驚喜!),我想知道爲什麼調用setWindowState(Qt::WindowMaximized)不改變窗口幾何。我有這樣的代碼:Qt WindowMaximize不改變幾何圖形(C++)

從mainwindow.h:

namespace Ui { 
    class MainWindow; 
} 

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

從mainwindow.cpp:

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應該沒問題。可以使用父控件的setContentsMargins()函數設置60像素邊距。 –