一、若是要改變位置關係,方法1是直接setGeometry,還有一種方法是添加布局控件。app
若是不設置二者位置關係,控件都會直接從座標0, 0開始放置:工具
二、添加垂直佈局佈局
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QVBoxLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget w; QPushButton button; /*按鈕是窗口*/ button.setText("Button"); button.setParent(&w); //窗口對象的父子關係:設置父窗口是button // button.setGeometry(30, 30, 100, 30); //座標原點在窗口的左上角[不包括工具欄] QLineEdit edit; edit.setParent(&w); QVBoxLayout vLayout; vLayout.addWidget(&button); vLayout.addWidget(&edit); w.setLayout(&vLayout); w.setWindowTitle("Hello world"); w.show(); return app.exec(); }
三、添加水平佈局3d
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QHBoxLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget w; QPushButton button; /*按鈕是窗口*/ button.setText("Button"); button.setParent(&w); //窗口對象的父子關係:設置父窗口是button // button.setGeometry(30, 30, 100, 30); //座標原點在窗口的左上角[不包括工具欄] QLineEdit edit; edit.setParent(&w); QHBoxLayout vLayout; vLayout.addWidget(&button); vLayout.addWidget(&edit); w.setLayout(&vLayout); w.setWindowTitle("Hello world"); w.show(); return app.exec(); }
關係:窗口裏面放置layout----> layout放置控件button和edit----> 這個兩個控件會自動根據layout的規則而佈局code
四、添加彈簧對象
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QHBoxLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget w; QPushButton button; /*按鈕是窗口*/ button.setText("Button"); button.setParent(&w); //窗口對象的父子關係:設置父窗口是button // button.setGeometry(30, 30, 100, 30); //座標原點在窗口的左上角[不包括工具欄] QLineEdit edit; edit.setParent(&w); QHBoxLayout vLayout; // vLayout.addStretch(1); //添加彈簧 vLayout.addWidget(&button); vLayout.addWidget(&edit); vLayout.addStretch(1); w.setLayout(&vLayout); w.setWindowTitle("Hello world"); w.show(); return app.exec(); }
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QHBoxLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget w; QPushButton button; /*按鈕是窗口*/ button.setText("Button"); button.setParent(&w); //窗口對象的父子關係:設置父窗口是button // button.setGeometry(30, 30, 100, 30); //座標原點在窗口的左上角[不包括工具欄] QLineEdit edit; edit.setParent(&w); QHBoxLayout vLayout; vLayout.addStretch(1); //添加彈簧 vLayout.addWidget(&button, 1); vLayout.addWidget(&edit, 1); vLayout.addStretch(1); //設置彈簧的比重:4分天下 w.setLayout(&vLayout); w.setWindowTitle("Hello world"); w.show(); return app.exec(); }
五、控件之間間隔blog
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QHBoxLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget w; QPushButton button; /*按鈕是窗口*/ button.setText("Button"); QLineEdit edit; QHBoxLayout vLayout; //有了Layout以後,其父子關係就不須要了,由於會自動構造控件的父子關係 vLayout.addStretch(1); //添加彈簧 vLayout.addWidget(&button, 1); //添加控件窗口到LayOut佈局上 vLayout.addSpacing(50); //在兩個控件窗口之間添加50個像素做爲間隔兩個控件 vLayout.addWidget(&edit, 1); vLayout.addStretch(1); //設置彈簧的比重:4分天下 w.setLayout(&vLayout); w.setWindowTitle("Hello world"); w.show(); return app.exec(); }
六、網格佈局ci
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QHBoxLayout> #include <QGridLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget w; QPushButton button; /*按鈕是窗口*/ button.setText("0, 0"); QLineEdit edit; QGridLayout gLayout; gLayout.setColumnStretch(0, 1); //在第0行放置1根彈簧 gLayout.setRowStretch(3, 1); //在第0列放置1根彈簧 gLayout.addWidget(&button, 0, 1); gLayout.addWidget(&edit, 0, 2); gLayout.addWidget(new QPushButton("1, 0"), 1, 1); gLayout.addWidget(new QPushButton("1, 1"), 1, 2); gLayout.addWidget(new QPushButton("3, 1"), 2, 1, 1, 2); w.setLayout(&gLayout); w.setWindowTitle("Hello world"); w.show(); return app.exec(); }
---get