SDL中文论坛

标题: 栈层控件(stack) [打印本页]

作者: ancientcc    时间: 2016-11-10 15:10
标题: 栈层控件(stack)
本帖最后由 ancientcc 于 2017-4-18 15:29 编辑
  1. void tfold::move(const int diff_y) const
复制代码
diff_y: 相对鼠标按下点,此次拖移造成的y方向的偏移。(last.y - first.y)。0表示恢复回初始状态。向上切分时,最大diff_y=std_top_rect_.h - reserve_height_,包括上面的max_top_movable_,还有底下的max_bottom_height。向下切分时,最大diff_y也是那个值,只不过是正数。

对于栈,还有种处理法是形成的链尾是最末控件,只是把它前面的[layer]补插进[stacked_widget]和此控件之间。
举个例子,最末控件是[button],当[button]所处的[layer]不是[stacked_widget]第三个[layer]时,补插进把第一个、第二[layer]。让脏链看去是以下样子。
......
[stacked_widget]
[layer1] <= 补插进
[layer2] <= 补插进
[layer3]
[button]
由于layer1、layer2没有脏,相比于之上方法,它在复制layer1、layer2使得区域变成整个,这是增加了CPU负荷。

作者: ancientcc    时间: 2020-12-1 15:27
标题: 模式:pip
本帖最后由 ancientcc 于 2020-12-1 15:37 编辑

1、最底的layer0必将覆盖整个stack,不能向它挂接did_pip_top_grid_rect。
2、当底下layer的某个控件脏时,这时不会触发stack脏,draw该控件后不会自动draw覆盖它上面的上层layer的控件。因这个缺陷,开发者在布局时,需避免在两layer交叉处存在控件。
(, 下载次数: 2112)
test1、test2是属于layer0的控件。当鼠标落在它上面时,会draw该控件,但不会自动draw覆盖它上面的上层layer1,导致露出本该被layer1挡住的test1、test2的下半部。
(, 下载次数: 2116)





欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/) Powered by Discuz! X3.3