Qt中的水平|垂直布局管理器(QBoxLayout、QHboxLayout和QVBoxLayout)

本文主要是介绍Qt中的水平|垂直布局管理器(QBoxLayout、QHboxLayout和QVBoxLayout),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QHBoxLayout 类水平排列小部件。

下面介绍水平布局管理器的使用方法:

效果

 

源码:

    QHBoxLayout* hLayout = new QHBoxLayout();QPushButton* pbtn1 = new QPushButton("button 1");QPushButton* pbtn2 = new QPushButton("button 2");QPushButton* pbtn3 = new QPushButton("button 3");QPushButton* pbtn4 = new QPushButton("button 4");QPushButton* pbtn5 = new QPushButton("button 5");hLayout->addWidget(pbtn1);hLayout->addWidget(pbtn2);hLayout->addWidget(pbtn3);hLayout->addWidget(pbtn4);hLayout->addWidget(pbtn5);setWindowTitle(QString::fromLocal8Bit("布局管理器-QHboxLayout"));setLayout(hLayout);qDebug() << "this: " << this;qDebug() << pbtn1->text() + " Parent:" << pbtn1->parent();qDebug() << pbtn2->text() + " Parent:" << pbtn2->parent();qDebug() << pbtn3->text() + " Parent:" << pbtn3->parent();qDebug() << pbtn4->text() + " Parent:" << pbtn4->parent();qDebug() << pbtn5->text() + " Parent:" << pbtn5->parent();

 结果是 同一个QHBoxLayout管理的组件有相同的父组件

接口分析

设置外边距的函数:

  • void setMargin(int)
  • void setContentsMargins(int left, int top, int right, int bottom)
  • void setContentsMargins(const QMargins &margins)
hLayout->setContentsMargins(20, 20, 20, 20);

运行效果:

 设置间距:

此属性保存布局内小部件之间的间距

  • void setSpacing(int)
hLayout->setSpacing(0);

运行效果图:

设置组件伸缩比例系数:

  • void setStretch(int index, int stretch)
  • bool setStretchFactor(QWidget *widget, int stretch)
  • bool setStretchFactor(QLayout *layout, int stretch)
    hLayout->setStretch(0, 1);hLayout->setStretch(1, 2);hLayout->setStretch(2, 3);

运行效果图:

 添加一个伸缩空间:

将大小为 size 的不可拉伸空间(QSpacerItem)添加到此框布局的末尾。 QBoxLayout 提供默认的边距和间距。 此功能增加了额外的空间。

  • void addSpacing(int size)
    hLayout->addStretch(0);hLayout->addWidget(pbtn1);hLayout->addWidget(pbtn2);hLayout->addWidget(pbtn3);hLayout->addWidget(pbtn4);hLayout->addWidget(pbtn5);hLayout->addStretch(0);

运行效果图:


QVBoxLayout 类垂直排列小部件。

 下面介绍QVBoxLayout使用方法:

效果图:

源码:

    QVBoxLayout* vLayout = new QVBoxLayout();QPushButton* pbtn1 = new QPushButton("button 1");QPushButton* pbtn2 = new QPushButton("button 2");QPushButton* pbtn3 = new QPushButton("button 3");QPushButton* pbtn4 = new QPushButton("button 4");QPushButton* pbtn5 = new QPushButton("button 5");vLayout->addWidget(pbtn1);vLayout->addWidget(pbtn2);vLayout->addWidget(pbtn3);vLayout->addWidget(pbtn4);vLayout->addWidget(pbtn5);setWindowTitle(QString::fromLocal8Bit("布局管理器-QHboxLayout"));setLayout(vLayout);qDebug() << "this: " << this;qDebug() << pbtn1->text() + " Parent:" << pbtn1->parent();qDebug() << pbtn2->text() + " Parent:" << pbtn2->parent();qDebug() << pbtn3->text() + " Parent:" << pbtn3->parent();qDebug() << pbtn4->text() + " Parent:" << pbtn4->parent();qDebug() << pbtn5->text() + " Parent:" << pbtn5->parent();

 

 结果是 同一个QVBoxLayout管理的组件有相同的父组件。 


QHBoxLayout和QVBoxLayout嵌套使用:

运行效果图:

源码:

    QVBoxLayout* vLayout = new QVBoxLayout();QHBoxLayout* hLayout1 = new QHBoxLayout();QHBoxLayout* hLayout2 = new QHBoxLayout();QPushButton* pbtn1 = new QPushButton("button 1");QPushButton* pbtn2 = new QPushButton("button 2");QPushButton* pbtn3 = new QPushButton("button 3");QPushButton* pbtn4 = new QPushButton("button 4");QPushButton* pbtn5 = new QPushButton("button 5");QPushButton* pbtn6 = new QPushButton("button 6");QPushButton* pbtn7 = new QPushButton("button 7");QPushButton* pbtn8 = new QPushButton("button 8");QPushButton* pbtn9 = new QPushButton("button 9");QPushButton* pbtn0 = new QPushButton("button 0");hLayout1->addWidget(pbtn1);hLayout1->addWidget(pbtn2);hLayout1->addWidget(pbtn3);hLayout1->addWidget(pbtn4);hLayout1->addWidget(pbtn5);hLayout2->addWidget(pbtn6);hLayout2->addWidget(pbtn7);hLayout2->addWidget(pbtn8);hLayout2->addWidget(pbtn9);hLayout2->addWidget(pbtn0);vLayout->addLayout(hLayout1);vLayout->addLayout(hLayout2);setLayout(vLayout);setWindowTitle(QString::fromLocal8Bit("布局管理器-QBoxLayout嵌套使用"));    

 

这篇关于Qt中的水平|垂直布局管理器(QBoxLayout、QHboxLayout和QVBoxLayout)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166118

相关文章

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软