news 2026/5/11 5:44:34

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/5/10 1:14:38

DamaiHelper大麦抢票助手:智能化购票解决方案详解

DamaiHelper大麦抢票助手&#xff1a;智能化购票解决方案详解 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在当今热门演出票务市场一票难求的背景下&#xff0c;传统手动抢票方式已难以满足用…

作者头像 李华
网站建设 2026/5/10 18:14:54

影视片段二次创作:用IndexTTS 2.0替换原声配音

影视片段二次创作&#xff1a;用IndexTTS 2.0替换原声配音 在B站刷到一段经典电影混剪&#xff0c;主角的台词却被换成了一位虚拟主播的声音——语气精准、情绪到位&#xff0c;甚至连语速都严丝合缝地卡在画面转场点上。你可能会好奇&#xff1a;这真的是AI合成的吗&#xff…

作者头像 李华
网站建设 2026/5/9 22:11:58

如何用League Akari智能辅助工具提升英雄联盟游戏效率:完整体验指南

如何用League Akari智能辅助工具提升英雄联盟游戏效率&#xff1a;完整体验指南 【免费下载链接】LeagueAkari ✨兴趣使然的&#xff0c;功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari …

作者头像 李华
网站建设 2026/5/9 10:08:52

DamaiHelper技术解析:高效抢票系统的完整实现方案

DamaiHelper技术解析&#xff1a;高效抢票系统的完整实现方案 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在热门演出门票一票难求的当下&#xff0c;传统的手动抢票方式往往让人望而却步。Da…

作者头像 李华
网站建设 2026/5/9 14:07:21

DVWA安全测试平台模拟攻击防护IndexTTS Web服务接口

DVWA安全测试平台模拟攻击防护IndexTTS Web服务接口 在AI语音合成技术加速落地的今天&#xff0c;越来越多的内容平台开始集成文本到语音&#xff08;TTS&#xff09;能力&#xff0c;用于生成虚拟主播、有声书、智能客服语音等。B站开源的 IndexTTS 2.0 凭借其“零样本音色克隆…

作者头像 李华
网站建设 2026/5/9 10:04:06

Windows平台Poppler完整安装指南:5分钟搭建PDF处理环境

Windows平台Poppler完整安装指南&#xff1a;5分钟搭建PDF处理环境 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上的PDF文档处…

作者头像 李华