在Qt提供了許多版面配置管理器 - QLayout, QGridLayout, QBoxLayout, QStackedLayout, QHBoxLayout, QVBoxLayout
這裡有一個使用Layout要注意的事情
QSizePolicy
This property holds the default layout behavior of the widget.
If there is a QLayout that manages this widget's children, the size policy specified by that layout is used. If there is no such QLayout, the result of this function is used.
意思應該是說,若已經有一個Layout在管理這一個Widget的話,那麼這一個Widget的大小就是根據這一個Layout的設定來調整。
若沒有Layout來管理這一個Widget的話,Widget才可以透過程式員自行控制。
這一些可能是我還不太會用~當視窗大小版變時,元件也同時會變大,位置變的非常不漂亮。
因此,我必需學會如何自定位置。
在QWidget可以使用setGeometry,可以設定在父類別的座標系統中,其座標位置應該在哪裡。
以下就是一個在一個Widget裡面的QPushButton設定其相對於父類別的相對位置和其大小。
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLabel>
int
main (
int argc,
char *argv[]
)
{
//
// app is this program's QApplication.
// Here it is created and processes some of the command-line arguments (such as -display under X Window)
//
QApplication app (argc, argv);
//
// Create a main widget
//
QWidget *Widget = new QWidget;
Widget->setWindowTitle ("MainWidget");
Widget->resize (250, 500);
//
// Create a PushButton and the Label is "Hello World", it's parent is Widget
//
QPushButton *button = new QPushButton ("Hello World", Widget);
//
// Set the geometry of the widget relative to its parent
// This example is (20, 0) relative to it's parent
// button's size is width: 100 heigh: 50
//
// button->setGeometry (20, 0, button->sizeHint().rwidth(), button->sizeHint().rheight());
button->setGeometry (20, 0, 100, 50);
Widget->show ();
return app.exec ();
}
參考資料: