控件显示和隐藏

本文详细解析了GUI控件的不同状态,包括隐藏不占位、隐藏占位、显示但不可见和显示并且可见的状态,探讨了在Web和QT框架下如何通过不同的属性如display、show/hide、visible以及isVisible来管理和判断控件的显示与隐藏状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

  • GUI控件在不同情况下有多种状态,如下:
  1. 隐藏不占位;控件隐藏并且不占用窗口上的位置,例如:顺序布局,隐藏掉一个item,其位置会被其它元素占用。
  2. 隐藏占位;控件隐藏但是占用窗口上的位置,例如:隐藏掉该控件,其位置不会被其它元素占用。
  3. 显示但不可见;控件显示但是由于被其它控件遮挡,或者父控件未显示,导致实际上不可见。
  4. 显示并且可见;控件显示并且可见。
  • 由于控件显示隐藏有多种状态,如果使用bool类型表示这些状态,一个变量肯定是不够的;在web中有display(表示是否占位),show/hide(表示显示/隐藏), visible(表示是否可见)。
  • 显示/隐藏是控件自己的属性,和其它元素无关;而是否可见,既需要设置自身的属性也要根据其它元素的状况来判断。
  • 设置是否可见,并不是确定的行为,并不是设置可见后就能立马可见,也有可能被其它元素遮挡而导致不可见。

QT实现

  • QT控件有显示/隐藏以及是否可见的区别,暂时不清楚QT是否有占位与不占位的区别。

显示/隐藏

  • 设置
inline void show() { setVisible(true); }
inline void hide() { setVisible(false); }
  • 获取状态
bool isHiden()
  • 说明
  1. 显示/隐藏只是控件的一个属性,设置后可以立即获取,不会自动更改。
  2. 控件初始化后默认是显示的。

可见/不可见

  • 设置
virtual void setVisible(bool visible);
inline void setHidden(bool hidden) { setVisible(!hidden); }
  • 获取状态
bool isVisible()
  • 说明
  1. 可见/不可见需要根据很多条件进行判断,设置后并不是立即生效,立刻就可见,也并不一定会生效。
  2. 控件初始化后可能会出现由于电脑卡,需要一段时间才显示,isVisible返回false。
  • 注意项
  • 在某个博客中看到:如果向Qt部件窗口发送SW_HIDE消息,窗口是会隐藏的,但是其isVisible的值并未更新;未使用新版本验证,可能是老版本的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值