news 2026/8/29 7:30:28

QGridLayout 网格布局构建一个数字键盘布局

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QGridLayout 网格布局构建一个数字键盘布局

QGridLayout

一个方方正正的网格布局,

它适合排布那些横平竖直的多行列内容,

比如数字键盘,

就很适合用网格布局来处理

1 成品示例

2 代码实现

数据键盘有5行4列,

每个按键占据一个网格,

其中有三个按键不太安分。

0键要横跨两列,

加号和回车键要竖跨两行。

满足,必须满足。

代码实现:

QGridLayout *layout = new QGridLayout; layout->setMargin(0); layout->setSpacing(0); //第一行 QPushButton *btnNumLk = new QPushButton("Num LK"); QPushButton *btnDiv = new QPushButton("/"); QPushButton *btnMul = new QPushButton("*"); QPushButton *btnSub = new QPushButton("-"); layout->addWidget(btnNumLk, 0, 0); layout->addWidget(btnDiv, 0, 1); layout->addWidget(btnMul, 0, 2); layout->addWidget(btnSub, 0, 3); //第二行 QPushButton *btn7 = new QPushButton("7"); QPushButton *btn8 = new QPushButton("8"); QPushButton *btn9 = new QPushButton("9"); layout->addWidget(btn7, 1, 0); layout->addWidget(btn8, 1, 1); layout->addWidget(btn9, 1, 2); //第三行 QPushButton *btn4 = new QPushButton("4"); QPushButton *btn5 = new QPushButton("5"); QPushButton *btn6 = new QPushButton("6"); layout->addWidget(btn4, 2, 0); layout->addWidget(btn5, 2, 1); layout->addWidget(btn6, 2, 2); //第四行 QPushButton *btn1 = new QPushButton("1"); QPushButton *btn2 = new QPushButton("2"); QPushButton *btn3 = new QPushButton("3"); layout->addWidget(btn1, 3, 0); layout->addWidget(btn2, 3, 1); layout->addWidget(btn3, 3, 2); //第五行 QPushButton *btn0 = new QPushButton("0"); QPushButton *btnDot = new QPushButton("."); layout->addWidget(btn0, 4, 0, 1, 2); layout->addWidget(btnDot, 4, 2); //第四列 QPushButton *btnAdd = new QPushButton("+"); QPushButton *btnEnter = new QPushButton("Enter"); layout->addWidget(btnAdd, 1, 3, 2, 1); layout->addWidget(btnEnter, 3, 3, 2, 1); this->setLayout(layout);

看下效果:

好像和预期的不太一样是吧!

这是因为按钮的大小被限制了,

这样布局会老老实实的按照按钮的限制,

怎么帮按钮界限突破下呢?

直接看代码:

//批量修改按钮大小 QList<QPushButton *> allPButtons = findChildren<QPushButton *>(); for(auto btn : allPButtons) { if(btn->text() == "+" || btn->text() == "Enter") btn->setMinimumSize(60,120); else btn->setMinimumSize(60,60); btn->setMaximumHeight(6000); }

findChildren很方便的获取所有按钮,

然后依次给按钮设置最小值和最大值。

再来看界限突破后的样子

这样就可以了!

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

Unity游戏多语言翻译插件:一键解决游戏语言障碍的终极方案

Unity游戏多语言翻译插件&#xff1a;一键解决游戏语言障碍的终极方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂外文游戏而苦恼吗&#xff1f;想畅玩全球精品Unity游戏却被语言问题困扰…

作者头像 李华
网站建设 2026/8/28 14:17:04

洛雪音乐六音音源完美修复指南:3步解决播放问题

洛雪音乐六音音源完美修复指南&#xff1a;3步解决播放问题 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后无法使用六音音源而困扰吗&#xff1f;这个简单教程将帮你快速解…

作者头像 李华
网站建设 2026/8/29 1:12:03

临时文件自动化管理方案:Windows 11 系统冗余文件智能清理脚本

一、方案概述 随着 Windows 11 系统的日常使用&#xff0c;各类临时文件、缓存数据、下载残留等冗余文件会不可避免地积累。这些文件不仅占用宝贵的磁盘空间&#xff0c;导致系统响应变慢、启动时间延长&#xff0c;还可能在某些情况下引发程序冲突或系统不稳定。 手动清理这…

作者头像 李华
网站建设 2026/8/26 5:05:06

Windows平台5分钟搞定Poppler:PDF处理终极配置手册

Windows平台5分钟搞定Poppler&#xff1a;PDF处理终极配置手册 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统配置PDF处理工具而…

作者头像 李华
网站建设 2026/8/29 2:46:52

用户脚本管理平台高可用架构设计与实践

用户脚本管理平台高可用架构设计与实践 【免费下载链接】scriptcat 脚本猫&#xff0c;一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scriptcat 在当今互联网环境中&#xff0c;用户脚本管理平台作为浏览器功能扩展的核心组件&#x…

作者头像 李华
网站建设 2026/8/25 12:05:38

终极显卡配置神器:NVIDIA Profile Inspector 完全掌控指南

终极显卡配置神器&#xff1a;NVIDIA Profile Inspector 完全掌控指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 想要彻底释放你的NVIDIA显卡性能潜力吗&#xff1f;NVIDIA Profile Inspector这款…

作者头像 李华