2013-08-07 99 views
0

我想用qt和qt設計器一起創建一個簡單的全屏webview,上面有一個線條編輯和一個按鈕來創建一個非常簡單的瀏覽器。使用Qt構建全屏佈局

問題是,佈局不希望展開以填充所有可用空間。我似乎認爲我錯過了一些非常簡單的事情,但我似乎無法弄清楚。

這裏是我的佈局

<MainWindow> 
    <GridView> 
     <VBoxLayout> 
      <HBoxLayout>    
       <lineEdit /><PushButton /> 
      </HBoxLayout> 
      <WebView /> 
     </VBoxLayout> 
    </GridView> 
</MainWindow> 

這裏的概述是在MainWindow類

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 

    ui->setupUi(this); 
    ui->lineEdit->showFullScreen(); 
    ui->pushButton->showFullScreen(); 

    ui->webView->load(QUrl("http://google.com")); 

    ui->webView->showFullScreen(); 

} 

的代碼,這裏是主代碼

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.showMaximized(); 
    return a.exec(); 
} 

它找出來像這樣而不是webview和lineedit填充整個空間量 enter image description here

有沒有辦法在Qt中這樣做,我會假設這是一個標準的事情要做。

很多預先感謝!

回答

0

我想你必須直接用VBoxLayout替換GridView。 您準確使用的網格視圖是什麼?

<MainWindow> 
    <VBoxLayout> 
     <HBoxLayout>    
      <lineEdit /><PushButton /> 
     </HBoxLayout> 
     <WebView /> 
    </VBoxLayout> 
</MainWindow> 
0

確保你的對象屬性「sizePolicy」設置的最大值和「MAXIMUMSIZE」是16777215,那麼w.showFullscreen應該工作

+0

謝謝,但我想知道什麼對象..?主窗口或web視圖 – user866190

0

如果你的意思是你想要的窗口填滿整個屏幕,隱藏與此

w.showMaximized(); 

:任務欄和標題欄,應更換此

w.showFullScreen(); 

如果您的意思是您希望行編輯和Web視圖窗口小部件填充包含它們的窗口,「全屏」並不意味着您認爲它的作用。您的問題可能與您在設計器中的佈局有關,並且您的原始帖子中沒有足夠的信息來正確診斷它。鑑於您的用戶界面目前非常簡單,最簡單的方法就是打破所有佈局並重新開始。

不管你想要什麼,你絕對不應該在你的行編輯,按鈕或網頁視圖上調用showFullScreen()

0

我懷疑問題是你已經在裏面設置了BoxLayout 父窗口部件,而不是設置父窗口部件使用BoxLayout。在Qt Designer中,您應該能夠右鍵單擊父窗口小部件並設置佈局,並且它會像您想要的那樣展開。如果您只是將BoxLayout添加到工具欄中的小部件,它將不會自動展開以匹配其父項。

請參閱此鏈接瞭解詳情:http://embrisk.com/notes/qt_resize.html

0

擴大後,斯蒂芬貝爾的回答(我會發表評論,但我缺乏信譽),因爲它花了一段時間來弄清楚這一點爲好。

如果您完全設計了希望全屏顯示的佈局,請右鍵單擊屏幕最右側的「主窗口」。應該出現一個下拉菜單。點擊佈局,然後點擊網格佈局。主窗口應呈現網格佈局。它不應該改變你的對象在Qt Designer中的定位。但是,它應該修復全屏。

如果MainWindow沒有佈局,您的佈局可能會有空格或死區而沒有解釋。