Qt之佈局:改變控件位置關係QVBoxLayout

一、若是要改變位置關係,方法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

相關文章
相關標籤/搜索