欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

控件显示和隐藏

程序员文章站 2022-05-05 19:11:01
...

说明

  • 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的值并未更新;未使用新版本验证,可能是老版本的问题。
相关标签: GUI - QT编程