news 2026/6/15 20:21:44

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/6/15 11:48:46

原神自动化工具终极指南:从新手到专家的完整进阶之路

还在为原神中繁琐的日常任务感到疲惫吗&#xff1f;每天重复的钓鱼、拾取、派遣是否让你失去了游戏的乐趣&#xff1f;别担心&#xff0c;BetterGI这款强大的原神自动化工具将彻底改变你的游戏体验&#xff01; 【免费下载链接】better-genshin-impact &#x1f368;BetterGI …

作者头像 李华
网站建设 2026/6/15 19:46:41

基于微服务的校园物资交互系统设计与开发 项目实战开发 代码答疑

阅读提示 博主是一位拥有多年毕设经验的技术人员&#xff0c;如果本选题不适用于您的专业或者已选题目&#xff0c;我们同样支持按需求定做项目&#xff0c;论文全套&#xff01;&#xff01;&#xff01; 博主介绍 CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者…

作者头像 李华
网站建设 2026/6/15 18:52:55

DownKyi视频下载工具完全掌握:新手到专家的进阶之路

还在为无法离线观看B站视频而烦恼吗&#xff1f;DownKyi这款专业级下载工具彻底解决了您的困扰&#xff0c;从标清到8K超高清画质一网打尽&#xff0c;让您轻松收藏从教程到娱乐的各种视频内容。无论您是想要保存珍贵的学习资料还是收藏精彩的动漫视频&#xff0c;这个工具都能…

作者头像 李华
网站建设 2026/6/15 16:43:06

比SOTA提速10倍!北大DragMesh重塑3D交互,物理零失真

近日&#xff0c;北京大学团队提出DragMesh&#xff0c;通过「语义-几何解耦」范式与双四元数VAE&#xff0c;成功将核心生成模块的算力消耗降低至SOTA模型的1/10&#xff0c;同时将运动轴预测误差降低了10倍。得益于底层数学的完备性&#xff0c;该模型无需任何标注&#xff0…

作者头像 李华
网站建设 2026/6/15 13:02:18

Windows版Poppler终极配置指南:3步搞定PDF处理环境

Windows版Poppler终极配置指南&#xff1a;3步搞定PDF处理环境 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统配置PDF文档解析工…

作者头像 李华
网站建设 2026/6/15 13:00:44

Windows平台5分钟快速配置Poppler PDF处理环境完整指南

Windows平台5分钟快速配置Poppler PDF处理环境完整指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上PDF文档处理工具配置而…

作者头像 李华