当前位置: 首页 > news >正文

Qt designer坑-布局内子控件的顺序错乱

如一个gridlayout,依次是多个按钮 第一行 :button1、button2、button3,第二行 :button4、button5、button6
如果在Qt designer里往布局拖新的控件或删除控件,designer会自行对layout的控件顺序重新自动排序,排序的规则没有研究出来,好像也不是按照控件的名称。这里控件顺序指的不是界面上的排序,而是QLayoutItem *QLayout::itemAt(int index)对应的index,比如itemAt(0)直观觉得应该返回button1,但它却返回button5

如何确保itemAt的顺序跟界面上的控件顺序一致?必须人为编辑.ui文件,实际上是一个xml文件,找到gridlayout的字段,如

<layout class="QGridLayout" name="gridLayout"><item row="1" column="1"><widget class="QToolButton" name="button5">     <property name="text"><string>5</string></property><property name="iconSize"><size><width>50</width><height>50</height></size></property></widget></item>...<item row="0" column="0"><widget class="QToolButton" name="button1">     <property name="text"><string>1</string></property><property name="iconSize"><size><width>50</width><height>50</height></size></property></widget></item>      
</layout>

把button1调整到最前面,保存,重新编译.ui文件即可,这样itemAt(0)返回的就是button1,itemAt的顺序是跟.ui里的顺序一致的。
但只要再用Qt designer编辑控件,.ui里的顺序就又会被打乱,这个问题非常恼人,目前没办法,只能避免用Qt designer,自己手动改.ui

用到itemAt的场景,如隐藏了layout里的控件,但控件仍然占着空位,想让其它控件自动填充空位,此时可以先把隐藏的控件从layout里去掉,再把剩余的控件(通过itemAt获取剩余控件)全部去掉,重新逐一添加回layout。如果itemAt的顺序跟原来界面上的不一样,控件的位置就不对了

http://www.dtcms.com/a/264735.html

相关文章:

  • 量化交易学习之自动化交易策略 [freqtrade 框架学习] ,常见问题避坑指南!!!!
  • <u>#12288;#8203;</u> HTML5全角空格,自动换行,半角用#32;#8203;
  • Spring AI Advisor RAG使用指南
  • Android Auto即将带来变革
  • AI大模型:从编码助手到流程重构者——软件开发新范式解析
  • 【前端】1 小时实现 React 简历项目
  • 多种方法实现golang中实现对http的响应内容生成图片
  • MySQL间隙锁详解:解决幻读的「隐形守护者」
  • React 学习(2)
  • 03-JS资料
  • 企业需要什么样的远程桌面管理软件?
  • 不引入变量 异或交换的缺点
  • 替代进口SCA7606【智芯微】国产高精度电流传感器 工业新能源电网专用
  • openai-agents记忆持久化(neo4j)
  • WPF学习笔记(21)ListBox、ListView与控件模板
  • 深入理解 LoRA:大语言模型微调的低秩魔法
  • PyTorch 不支持旧GPU的异常状态与解决方案:CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH
  • Spring Boot 高并发框架实现方案:数字城市的奇妙之旅
  • 智能物流革命:Spring Boot+AI实现最优配送路径规划
  • Knife4j+Axios+Redis:前后端分离架构下的 API 管理与会话方案
  • 【Java关系映射入门】实战一
  • gin如何返回html
  • Java面试宝典:集合一
  • 生僻字写入oracle后被转为??
  • (一)大语言模型的关键技术<-AI大模型构建
  • 在浏览器输入url,会发送什么事情?
  • HMAC 介绍
  • 在 VMware虚拟机中使用 NAT 网络模式
  • Git 怎么判断是否冲突?
  • Active Directory 环境下 Linux Samba 文件共享服务建设方案