news 2026/8/20 17:15:22

QT_QT布局常用类QStackedWidget与QLayout类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT_QT布局常用类QStackedWidget与QLayout类

文章目录

  • QT_QT布局常用类QStackedWidget与QLayout类
    • QLayout类(基本布局)
      • 继承体系
      • 布局案例
    • QStackenWidget类(堆栈窗体)
      • 继承体系
      • 示例

QT_QT布局常用类QStackedWidget与QLayout类

QLayout类(基本布局)

继承体系

QLayout 是所有布局管理器的基类,它继承自 QObject(而非 QWidget)。整体继承关系如下:

QObject └── QLayout// 所有布局管理器的基类├── QBoxLayout// 线性布局(抽象基类)│ ├── QHBoxLayout// 水平排列│ └── QVBoxLayout// 垂直排列├── QGridLayout// 网格布局(二维)├── QFormLayout// 表单布局(标签 + 输入框)└── QStackedLayout// 堆叠布局(同一区域切换控件)

布局案例

#include"dialog.h"Dialog::Dialog(QWidget*parent):QDialog(parent){setWindowTitle("员工信息");// 左边控件UserNumber=newQLabel("员工编号:");UserNumberEdit=newQLineEdit;UserName=newQLabel("员工姓名:");UserNameEdit=newQLineEdit;//(this)UserSex=newQLabel("员工性别");UserSexCombox=newQComboBox;UserSexCombox->addItem("男");UserSexCombox->addItem("女");UserDepart=newQLabel("所在部门:");UserDepartEdit=newQTextEdit;UserAge=newQLabel("员工年龄");UserAgeEdit=newQLineEdit;// 右边控件topRightLayout=newQHBoxLayout();topRightLayout->setSpacing(25);MySelfInfo=newQLabel("个人简历");MyselfInfoTextEdit=newQTextEdit;rightlayout=newQVBoxLayout();rightlayout->addLayout(topRightLayout);rightlayout->addWidget(MySelfInfo);rightlayout->addWidget(MyselfInfoTextEdit);// 右边下部分// QPushButton *okBtn,*cancelBtn;// QHBoxLayout *buttomLayout;okBtn=newQPushButton("保存");cancelBtn=newQPushButton("退出");buttomLayout=newQHBoxLayout();buttomLayout->addStretch();buttomLayout->addWidget(okBtn);buttomLayout->addWidget(cancelBtn);//网格布局lLayout=newQGridLayout();lLayout->addWidget(UserNumber,0,0);lLayout->addWidget(UserNumberEdit,0,1);lLayout->addWidget(UserName,1,0);lLayout->addWidget(UserNameEdit,1,1);lLayout->addWidget(UserSex,2,0);lLayout->addWidget(UserSexCombox,2,1);lLayout->addWidget(UserDepart,3,0);lLayout->addWidget(UserDepartEdit,3,1);lLayout->addWidget(UserAge,4,0);lLayout->addWidget(UserAgeEdit,4,1);lLayout->setColumnStretch(0,1);lLayout->setColumnStretch(1,3);QGridLayout*mlayout=newQGridLayout(this);mlayout->setMargin(20);mlayout->setSpacing(10);mlayout->addLayout(lLayout,0,0);mlayout->addLayout(rightlayout,0,1);mlayout->addLayout(buttomLayout,1,0,1,2);mlayout->setSizeConstraint(QLayout::SetFixedSize);}Dialog::~Dialog(){}

QStackenWidget类(堆栈窗体)

QStackedWidget 是 Qt 中用于实现多页面切换的容器控件。它在同一区域放置多个子控件(页面),但同一时刻只显示其中一个,常用于实现选项卡、向导、设置页面等场景。

继承体系

QObject+QWidget └── QFrame └── QStackedWidget └── 内部使用 QStackedLayout 实现

QStackedWidget 本质上是对 QStackedLayout 的封装,提供了更便捷的 Widget 级操作接口。

示例

#include"stackeddlg.h"#include<QHBoxLayout>stackedDlg::stackedDlg(QWidget*parent):QDialog(parent){setWindowTitle("堆栈窗体测试");qlist=newQListWidget(this);qlist->insertItem(0,"Linux1");qlist->insertItem(1,"Linux2");qlist->insertItem(2,"Linux3");qlist->insertItem(3,"Linux4");qlist->insertItem(4,"Linux5");lab1=newQLabel("linux1 QT");lab2=newQLabel("linux2 QT");lab3=newQLabel("linux3 QT");lab4=newQLabel("linux4 QT");lab5=newQLabel("linux5 QT");statcks=newQStackedWidget(this);statcks->addWidget(lab1);statcks->addWidget(lab2);statcks->addWidget(lab3);statcks->addWidget(lab4);statcks->addWidget(lab5);QHBoxLayout*mlayout=newQHBoxLayout(this);mlayout->setMargin(10);mlayout->setSpacing(20);mlayout->addWidget(qlist);mlayout->addWidget(statcks,0,Qt::AlignCenter);mlayout->setStretchFactor(qlist,1);mlayout->setStretchFactor(statcks,2);// 连接信号与槽connect(qlist,&QListWidget::currentRowChanged,statcks,&QStackedWidget::setCurrentIndex);}stackedDlg::~stackedDlg(){}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 13:56:20

095、BLC黑电平校正的实时标定与温度补偿——基于高通Spectra的产线标定流程与算法实现

095、BLC黑电平校正的实时标定与温度补偿——基于高通Spectra的产线标定流程与算法实现 产线上那台测试架又报红了,S5KGM2的Sensor在30度环境下标定的BLC值,到了60度老化房里暗电流直接飙了12个LSB。整批货差点报废,最后靠一套温度补偿查表硬拉回来的。这事让我一直想写写B…

作者头像 李华
网站建设 2026/8/19 13:55:49

免费离线OCR表格识别工具部署与实战指南

这次我们来看一个完全免费、支持离线使用的图片表格OCR识别工具。对于经常需要处理扫描文档、截图表格或者纸质表格电子化的办公人员来说&#xff0c;手动录入数据不仅耗时&#xff0c;还容易出错。这个工具的核心目标就是解决这个问题&#xff1a;将图片或PDF中的表格&#xf…

作者头像 李华
网站建设 2026/8/19 13:55:35

半小时用AI+VBA打造Excel一键查询系统,告别繁琐查找

如果你每天都要在Excel里翻找数据&#xff0c;比如根据员工姓名查工资、根据订单号查物流、根据产品编号查库存&#xff0c;是不是已经受够了反复按CtrlF、筛选、VLOOKUP的机械操作&#xff1f;更头疼的是&#xff0c;当数据量稍大&#xff0c;或者查询条件稍微复杂一点&#x…

作者头像 李华
网站建设 2026/8/19 13:55:13

Copilot autorun=1参数窃密漏洞实战分析:检测、复现与防御手册

1. 漏洞基础信息与风险定位 漏洞官方编号CVE-2026-24301&#xff0c;行业定名CoSnitch&#xff0c;是2026年AI安全领域首个高风险无交互窃密漏洞。该漏洞仅影响微软消费版Copilot&#xff08;copilot.microsoft.com&#xff09;&#xff0c;Office 365商业版、企业版Copilot暂未…

作者头像 李华