2014-02-16 38 views
2

我4個QToolBars的中心,其被放置爲這種​​拉伸QLineEdit的:C++工具欄跨過

addToolBar(new BarLeft()); 
addToolBar(new SearchBar()); 
addToolBar(new BarRight()); 
addToolBarBreak(); 
addToolBar(new BottomBar()); 

左側欄上有幾個圖標。正確的人也有一些圖標。中心欄包含一個文本字段,我想在其他兩個工具欄之間拉伸100%。除非另有說明,否則QT會自動將最後一個工具欄拉伸到空白區域。我發現結果告訴我要做以下事情,但它沒有奏效。

SearchBar::SearchBar() { 
    setMovable(false); 

    editor = new QLineEdit(); 
    editor->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); 
    addWidget(editor); 
} 

其結果是,場垂直填充,但Qt的顯示無關的RightBar,這是我給一個固定的寬度的右側。如果我將策略翻轉爲editor->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Expanding);,或者如果我忽略enter函數調用,結果完全相同。

對於在什麼我希望做一個視覺效果,只是看看谷歌瀏覽器,它有一個非常類似的界面:

[ Icon ] [ Icon ] [ ================ Text Field =============== ] [ Icon ] [ Icon ] 

我的Qt版本5.2.1是

+1

您是否確實需要使用工具欄?使用普通的佈局和小部件會更容易。 –

+0

我最終使用帶有邊框佈局的單個工具欄來對齊所有內容,因爲無論如何我都將工具欄設置爲不可移動。感謝您的建議。 –

回答

1

要使一個小工具在同一個佈局中比其他小工具長得更大,您需要horizontal stretch

editor = new QLineEdit(); 
QSizePolicy sp = editor->sizePolicy(); 
sp.setHorizontalStretch(1); 
editor->setSizePolicy(sp); 
addWidget(editor);