news 2026/1/29 12:04:04

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/1/26 8:39:26

电商产品介绍语音:快速生成多种情绪促销音频

电商产品介绍语音&#xff1a;快速生成多种情绪促销音频 在短视频与直播带货主导流量的时代&#xff0c;一段3秒内抓耳、10秒内促动的语音&#xff0c;可能直接决定一个商品链接的生死。用户早已不满足于“机械朗读式”的产品播报——他们要的是能传递惊喜感的尖叫、制造紧迫感…

作者头像 李华
网站建设 2026/1/27 6:35:42

WeChatPad安卓微信多设备终极解决方案

WeChatPad安卓微信多设备终极解决方案 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 在移动办公和数字生活日益丰富的今天&#xff0c;微信作为国内最主要的社交应用&#xff0c;其单设备登录限制已成为影响…

作者头像 李华
网站建设 2026/1/28 22:22:54

直播虚拟主播实时语音生成?IndexTTS 2.0延迟优化方向

直播虚拟主播实时语音生成&#xff1f;IndexTTS 2.0延迟优化方向 在一场高互动性的虚拟主播直播中&#xff0c;观众发送“哈哈哈”&#xff0c;屏幕上的角色立刻笑着回应&#xff1a;“你是不是笑太大声啦&#xff1f;”——语气俏皮、节奏自然&#xff0c;音画同步几乎无延迟。…

作者头像 李华
网站建设 2026/1/27 6:35:38

智慧树网课自动化学习助手:三分钟掌握高效刷课技巧

智慧树网课自动化学习助手&#xff1a;三分钟掌握高效刷课技巧 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的网课学习耗费大量时间而烦恼吗&#…

作者头像 李华
网站建设 2026/1/27 6:35:36

终极指南:用RePKG轻松解锁Wallpaper Engine壁纸宝藏

终极指南&#xff1a;用RePKG轻松解锁Wallpaper Engine壁纸宝藏 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 还在为无法获取心仪壁纸的原始素材而烦恼吗&#xff1f;RePKG这款专…

作者头像 李华
网站建设 2026/1/26 7:43:04

百度网盘提取码智能获取工具:3秒解决资源访问困境的终极指南

你是否曾经遇到过这样的场景&#xff1f;朋友发来一个百度网盘分享链接&#xff0c;满怀期待地点开&#xff0c;却卡在了"请输入提取码"这一步。翻遍通讯记录、搜索多个平台&#xff0c;就是找不到那个关键的密码。这种资源访问困境&#xff0c;相信每个网盘用户都深…

作者头像 李华