前言:
现在小伙伴们对“java布局管理器”都比较关怀,朋友们都需要了解一些“java布局管理器”的相关资讯。那么小编也在网上网罗了一些对于“java布局管理器””的相关内容,希望朋友们能喜欢,看官们快快来了解一下吧!布局管理器可以让程序员摆脱繁琐的窗口位置大小设置工作。并且布局管理器可以依据窗口大小变更布局控件的位置大小。
布局管理器基类为QLayout继承至QObject 和QLayoutItem,它是一个抽象基类,需要被进一步继承才能使用。它的派生类有QHBoxLayout、QVBoxLayout和QGridLayout。
每个窗口对象都可以设置一个布局管理器,来管理所有它的子窗口,由于布局管理器继承至QObject,那么布局管理的内存释放也可以托管给窗口对象,而所有添加到布局管理器中的窗口对象,它们的内存释放又都托管给这个布局管理器。
通过窗口对象的setLayout来设置布局管理器,如果事先已经设置了一个布局管理器,那么会替换掉这个布局管理器。
void QWidget::setLayout(QLayout *layout)
你可以简单的理解布局管理器为窗口的一部分。
1 QHBoxLayout与QVBoxLayout
QHBoxLayout、QVBoxLayout它们都继承至QBoxLayout,QBoxLayout又继承至QLayout。
QHBoxLayout是水平布局管理器,可以将所有托管给它的窗口对象按照水平方向进行布局。
QVBoxLayout是垂直布局管理器,可以将所有托管给它的窗口对象按照垂直方向进行布局。
将窗口添加到布局管理器中
【领QT开发教程学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击→领取「链接」
void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())/*widget 窗口对象stretch 伸缩系数alignment 对齐方式Qt::Aligment是Qt中的一个枚举类型,具体请查看帮助文档*/
设置伸缩系数
void QBoxLayout::setStretch(int index,int stretch)
添加类似弹簧的东西
void QBoxLayout::addStretch(int stretch= 0)
设置布局管理中窗口的间隔
void QBoxLayout::setSpacing(int spacing)
布局管理器中添加间隙
void QBoxLayout::addSpacing(int size);
设置布局管理器边界
void QLayout::setMargin(int margin)
设置对其方式
bool QLayout::setAlignment(QWidget *w, Qt::Alignment alignment)2 QGridLayout表格布局管理器
行伸缩系数
void QGridLayout::setRowStretch(int row,int stretch)
列的伸缩系数
void QGridLayout::setColumnStretch(int column,int stretch)
设置间隔
void QGridLayout::setSpacing(int spacing)
设置行的最小高
void QGridLayout::setRowMinimumHeight(int row, int minSize)
设置列的最小宽
void QGridLayout::setColumnMinimumWidth(int column, int minSize)
设置对齐方式
bool QLayout::setAlignment(QWidget *w, Qt::Alignment alignment)
【领QT开发教程学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击→领取「链接」
3 嵌套布局管理器
有些时候,我们需要实现复杂的布局效果,单单使用一种布局管理器,无法完成,那么这个时候需要嵌套使用布局管理器。即布局管理器中添加布局管理器。
QHBoxLayout与QVBoxLayout使用以下函数来嵌套其它布局管理器:
void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)
QGridLayout使用以下函数来嵌套其它布局管理器:
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())4 获取布局之后窗口大小
使用布局管理器之后,如果想在构造函数中获取窗口大小,这个时候就不能使用size函数来获取,需要通过sizeHint函数来获取。
这是因为,size获取的是窗口实际大小,一般通过resize来设置,不设置的时候也有默认大小。
然而如果设置了布局管理器,那么窗口在显示的时候还会按照特定的布局策略重置窗口大小,而sizeHint获取到的是重置后的窗口大小。函数原型如下:
virtual QSize sizeHint() const
注意:如果没有使用布局管理器,那么sizeHint返回的无效的值
标签: #java布局管理器