控件显示和隐藏
程序员文章站
2022-05-05 19:11:01
...
说明
- GUI控件在不同情况下有多种状态,如下:
- 隐藏不占位;控件隐藏并且不占用窗口上的位置,例如:顺序布局,隐藏掉一个item,其位置会被其它元素占用。
- 隐藏占位;控件隐藏但是占用窗口上的位置,例如:隐藏掉该控件,其位置不会被其它元素占用。
- 显示但不可见;控件显示但是由于被其它控件遮挡,或者父控件未显示,导致实际上不可见。
- 显示并且可见;控件显示并且可见。
- 由于控件显示隐藏有多种状态,如果使用bool类型表示这些状态,一个变量肯定是不够的;在web中有display(表示是否占位),show/hide(表示显示/隐藏), visible(表示是否可见)。
- 显示/隐藏是控件自己的属性,和其它元素无关;而是否可见,既需要设置自身的属性也要根据其它元素的状况来判断。
- 设置是否可见,并不是确定的行为,并不是设置可见后就能立马可见,也有可能被其它元素遮挡而导致不可见。
QT实现
- QT控件有显示/隐藏以及是否可见的区别,暂时不清楚QT是否有占位与不占位的区别。
显示/隐藏
- 设置
inline void show() { setVisible(true); }
inline void hide() { setVisible(false); }
- 获取状态
bool isHiden()
- 说明
- 显示/隐藏只是控件的一个属性,设置后可以立即获取,不会自动更改。
- 控件初始化后默认是显示的。
可见/不可见
- 设置
virtual void setVisible(bool visible);
inline void setHidden(bool hidden) { setVisible(!hidden); }
- 获取状态
bool isVisible()
- 说明
- 可见/不可见需要根据很多条件进行判断,设置后并不是立即生效,立刻就可见,也并不一定会生效。
- 控件初始化后可能会出现由于电脑卡,需要一段时间才显示,isVisible返回false。
- 注意项
- 在某个博客中看到:如果向Qt部件窗口发送SW_HIDE消息,窗口是会隐藏的,但是其isVisible的值并未更新;未使用新版本验证,可能是老版本的问题。
上一篇: javascript 控制 html元素 显示/隐藏
下一篇: EasyUI按钮控制标签显示与隐藏