qt入门 layout布局

Qt Designer中布局工具的使用 从anaconda启动QtDesigner anaconda3是自带QtDesigner以及pyqt库的。QtDesigner的位置在%anaconda3%\Library\bin文件夹(其中%anaconda3%表示anaconda3的安装目录)下,对应的是designer.exe。该文件夹下还有qt的帮助助手assistant.exe,以及将通过designer.exe生成的界面ui转化成py文件的工具pyuic5.bat等。 在命令行界面通过命令%anaconda3%/Scripts/activ. 阅读详情

 开发一个图形界面应用程序,界面的布局影响到界面的美观。在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。

        前面的程序中都是使用setGeometry()方法定位控件的位置,这个方法比较笨拙。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控件。

        常用的三种布局方法:

(1)使用水平布局类QHBoxLayout;

(2)使用垂直布局类QVBoxLayout;

(3)使用网格布局类QGridLayout。

这三种方法可以嵌套使用。

 

控件在布局时可以先不指定父窗口,最后交由Layout统一指定。

 

示例:

[cpp]  view plain copy
 
  1. #include <QApplication>  
  2. #include <QDialog>  
  3. #include <QPushButton>  
  4. #include <QLineEdit>  
  5. #include <QLayout>  
  6. #include <QLabel>  
  7.   
  8.   
  9. int main(int argc, char *argv[])  
  10. {  
  11.     QApplication a(argc, argv);  
  12.     QDialog *mainWindow = new QDialog;  
  13.   
  14.     QHBoxLayout *topLayout = new QHBoxLayout;  
  15.     QLabel *lbl = new QLabel(QWidget::tr("&Input:"), mainWindow);  
  16.     QLineEdit *lineEdt = new QLineEdit(mainWindow);  
  17.     lbl->setBuddy(lineEdt);  
  18.     topLayout->addWidget(lbl);  
  19.     topLayout->addWidget(lineEdt);  
  20.   
  21.     QHBoxLayout *bomLayout = new QHBoxLayout;  
  22.     QPushButton *btn_ok = new QPushButton(QWidget::tr("OK"), mainWindow);\  
  23.     btn_ok->setDefault(true);  
  24.     QPushButton *btn_cancel = new QPushButton(QWidget::tr("Cancel"), mainWindow);  
  25.     bomLayout->addStretch();  
  26.     bomLayout->addWidget(btn_ok);  
  27.     bomLayout->addStretch();  
  28.     bomLayout->addWidget(btn_cancel);  
  29.     bomLayout->addStretch();  
  30.   
  31.     QVBoxLayout *mainLayout = new QVBoxLayout;  
  32.     mainLayout->addLayout(topLayout);  
  33.     mainLayout->addLayout(bomLayout);  
  34.       
  35.     mainWindow->setLayout(mainLayout);  
  36.   
  37.     mainWindow->resize(300, 100);  
  38.     mainWindow->setWindowTitle(QWidget::tr("Qt Test"));  
  39.     mainWindow->show();  
  40.   
  41.     return a.exec();  
  42. }  


编译运行,界面如下:

 

在界面中,最外部是mainLayout,它的类型是垂直布局类QVBoxLayout。它包含了两个水平布局类QHBoxLayout,分别是topLayout和bomLayout。

 

比起QHBoxLayout和HVBoxLayout, QGridLayout运用更加灵活。

QGridLayout的常用方法

(1)addWidget:

[cpp]  view plain copy
 
  1. //放置一个控件到一个单元格  
  2. void    addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )  
  3. //如果放置的控件超出一个单元格,则使用该方法  
  4. void    addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )  

    1)row:指放置控件的网格行号(行号从0开始);

    2)colum:指放置控件的网格列号(从0开始);

    3)alignment:对齐方式。

    4)fromRow:指放置控件的起始网格行号;

    5)fromColumn:指放置控件的起始网格列号;

    6)rowSpan:指放置控件占多少行;

    7)columnSpan:指放置控件占多少列。


(2)addLayout

[cpp]  view plain copy
 
  1. void    addLayout ( QLayout * layout, int row, int column, Qt::Alignment alignment = 0 )  
  2. void    addLayout ( QLayout * layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )  

参数与addWidget类似。

(3)setSpacing

[cpp]  view plain copy
 
  1. void QGridLayout::setSpacing ( int spacing )  

设置控件水平和垂直之间的间隔。

示例:

[cpp]  view plain copy
 
  1. #include <QApplication>  
  2. #include <QDialog>  
  3. #include <QPushButton>  
  4. #include <QLineEdit>  
  5. #include <QLayout>  
  6. #include <QLabel>  
  7. #include <QTextEdit>  
  8.   
  9.   
  10. int main(int argc, char *argv[])  
  11. {  
  12.     QApplication a(argc, argv);  
  13.     QDialog *mainWindow = new QDialog;  
  14.   
  15.     QGridLayout *gridLayout = new QGridLayout;  
  16.     gridLayout->setColumnStretch(0, 1);  
  17.     gridLayout->setColumnStretch(1, 4);  
  18.     gridLayout->setColumnStretch(2, 1);  
  19.     gridLayout->setColumnStretch(3, 1);  
  20.     gridLayout->setColumnStretch(4, 4);  
  21.   
  22.     gridLayout->setMargin(15);  
  23.     gridLayout->setColumnMinimumWidth(2, 15);  
  24.   
  25.   
  26.     QLabel *lbl1 = new QLabel(QWidget::tr("First Name:"));  
  27.     QLineEdit *edit1 = new QLineEdit;  
  28.     QLabel *lbl2 = new QLabel(QWidget::tr("Last Name:"));  
  29.     QLineEdit *edit2 = new QLineEdit;  
  30.     QLabel *lbl3 = new QLabel(QWidget::tr("Sex:"));  
  31.     QLineEdit *edit3 = new QLineEdit;  
  32.     QLabel *lbl4 = new QLabel(QWidget::tr("Birthday:"));  
  33.     QLineEdit *edit4 = new QLineEdit;  
  34.     QLabel *lbl5 = new QLabel(QWidget::tr("Address:"));  
  35.     QTextEdit *textEdt = new QTextEdit;  
  36.   
  37.   
  38.   
  39.     gridLayout->addWidget(lbl1, 0, 0);  
  40.     gridLayout->addWidget(edit1, 0, 1);  
  41.     gridLayout->addWidget(lbl2, 0, 3);  
  42.     gridLayout->addWidget(edit2, 0, 4);  
  43.     gridLayout->addWidget(lbl3, 1, 0);  
  44.     gridLayout->addWidget(edit3, 1, 1);  
  45.     gridLayout->addWidget(lbl4, 1, 3);  
  46.     gridLayout->addWidget(edit4, 1, 4);  
  47.     gridLayout->addWidget(lbl5, 2, 0);  
  48.     gridLayout->addWidget(textEdt, 3, 0, 2, 5);  
  49.       
  50.     mainWindow->setLayout(gridLayout);  
  51.   
  52.     mainWindow->resize(400, 150);  
  53.     mainWindow->setWindowTitle(QWidget::tr("Qt Test"));  
  54.     mainWindow->show();  
  55.   
  56.     return a.exec();  
  57. }  


编译运行,界面如图:

 

转http://blog.youkuaiyun.com/xgbing/article/details/7764326

PyQt 布局控件的 layoutSpacing 属性 PyQt 是一个流行的 Python GUI 框架,它提供了丰富的控件和布局管理器,用于创建交互式的图形用户界面。在 QVBoxLayout 中,可以使用 layoutSpacing 属性来设置控件之间的间距。默认情况下,控件之间的间距是由布局管理器自动计算和设置的,但是可以通过修改 layoutSpacing 属性来进行自定义设置。最后,我们将布局管理器设置为窗口的布局,并显示窗口。希望这篇文章对您理解 PyQt 中的布局控件的 layoutSpacing 属性有所帮助。如有任何疑问,请随时提问。 阅读详情

相关推荐

Circular Label Layout圆形标签布局的QT实现

在主窗口的构造函数中,我们创建了一个QGraphicsView和QGraphicsScene来显示圆形标签布局。在resizeEvent()函数中,我们调用updateLayout()函数来更新布局,以确保它适应窗口大小的变化。当我们运行该应用程序时,将显示一个圆形窗口,并在圆形区域内均匀分布8个标签,每个标签都有一个编号。boundingRect()函数返回标签的边界矩形,paint()函数用于绘制标签的外观。这是一个基本的示例,你可以根据自己的需求对标签的外观和布局进行自定义。希望本文对你有帮助!

UhxzCombined的博客 236

Qt入门-layout布局

 开发一个图形界面应用程序,界面的布局影响到界面的美观。在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。         前面的程序中都是使用setGeometry()方法定位控件的位置,这个方法比较笨拙。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控...

weixin_34128501的博客 407

Qt入门教程【Core篇】Layout布局(布局管理器、手动布局)

Qt常用布局剖析

小鱼酱的博客 3万+

Qt6教程之二(1) 布局 Layouts

Qt教程之控件篇

让每一个想学习编程的人,都能学会,都能看懂,看了都有收获! 5935

机器视觉学习(七)—— 卷积、边缘和滤波器

卷积运算、垂直边缘与水平边缘、滤波器

歆歆~黯了 2740

计算机导论期末知识点及试题总结 [近三万字总结 · 全]

计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是

这个人好有趣....hh 1万+

QT常用布局layout快速入门

layout继承图 用layout布局实现下面的窗口效果

wjysg8408982的博客 4698

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

Qt入门之layout布局

开发一个图形界面应用程序,界面的布局影响到界面的美观。在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。         前面的程序中都是使用setGeometry()方法定位控件的位置,这个方法比较笨拙。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控件

程序猿成长之路 1221

基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践

本文详细介绍了基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践。通过环境配置、PX4仿真环境搭建、自定义消息生成、Simulink通信实现及实时优化等步骤,提供了完整的无人机位置控制案例,帮助开发者实现高精度的实时联合仿真。

red88的博客 204

腾讯Octop:Windows本地AI助手一键安装实战指南

本地AI助手是面向普通用户在个人设备上运行大语言模型的轻量级解决方案,其核心原理在于封装模型加载、推理调度与Web交互等底层复杂性,通过预编译运行时、自适应硬件加速和图形化配置降低使用门槛。技术价值体现在免环境依赖、离线可用、开箱即用,显著提升非开发者在专利撰写、文案生成、技术文档处理等办公场景中的生产力。本文聚焦Windows平台下的腾讯Octop工具,结合qwen2-7b-instruct、phi-3-mini等主流GGUF量化模型,详解安装适配、API集成与专利辅助工作流,覆盖从零部署到工程落地的完整

weixin_29055137的博客 308
上一篇: mysql 外键说明与实例
下一篇: Arduino+GPRS 远程数据采集系统
Watson2016
博客等级 码龄11年 342粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值