博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt之布局:改变控件位置关系QVBoxLayout
阅读量:6624 次
发布时间:2019-06-25

本文共 4305 字,大约阅读时间需要 14 分钟。

hot3.png

1、如果要改变位置关系,方法1是直接setGeometry,还有一种方法是添加布局控件。

如果不设置两者位置关系,控件都会直接从坐标0, 0开始放置:

95fb21931ef890573686175ea56c2f17a78.jpg

2、添加垂直布局

#include 
#include
#include
#include
#include
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();}

7415bbad1befd075682aecc6560fc1ba204.jpg

3、添加水平布局

#include 
#include
#include
#include
#include
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的规则而布局

4、添加弹簧

#include 
#include
#include
#include
#include
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();}

fbd22ac1ae3ffebff452ed102905233b55c.jpg

#include 
#include
#include
#include
#include
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();}

e8c0b6f55d23829de2bbb5f84168db3a383.jpg

5、控件之间间隔

#include 
#include
#include
#include
#include
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();}

6095f07390393ca85b55ea26c5175b438d3.jpg

6、网格布局

#include 
#include
#include
#include
#include
#include
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();}

86e0aa0f3afb93ee13b7ccc2ea008ab50db.jpg

---

转载于:https://my.oschina.net/u/3919756/blog/1944117

你可能感兴趣的文章
Rsyslog实现Nginx日志统一收集
查看>>
开源数字媒体资产管理系统:Razuna
查看>>
linux文本处理三剑客之grep家族及其相应的正则表达式使用详解
查看>>
Java中的IO操作(一)
查看>>
Python---装饰器
查看>>
s17data01
查看>>
kubernetes1.9.1 集群
查看>>
java set and get 用法
查看>>
linux笔记1-1
查看>>
less及编译工具介绍
查看>>
干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束
查看>>
IP访问控制列表(ACL)
查看>>
MPLS ×××案例
查看>>
Jmeter-发送JDBC请求
查看>>
LVS DR模式搭建 keepalived + LVS
查看>>
dubbo源码分析-负载均衡
查看>>
OCP 052考试新题库收集整理-第20题
查看>>
决心书
查看>>
一统江湖的大前端(3) DOClever——你的postman有点low
查看>>
云栖大会上发布了哪些移动研发新利器?
查看>>