SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3832|回复: 1
打印 上一主题 下一主题

[gui2] 栈层控件(stack)

[复制链接]

187

主题

346

帖子

2450

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2450
跳转到指定楼层
楼主
发表于 2016-11-10 15:10:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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负荷。
回复

使用道具 举报

187

主题

346

帖子

2450

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2450
沙发
 楼主| 发表于 2020-12-1 15:27:22 | 只看该作者

模式:pip

本帖最后由 ancientcc 于 2020-12-1 15:37 编辑

1、最底的layer0必将覆盖整个stack,不能向它挂接did_pip_top_grid_rect。
2、当底下layer的某个控件脏时,这时不会触发stack脏,draw该控件后不会自动draw覆盖它上面的上层layer的控件。因这个缺陷,开发者在布局时,需避免在两layer交叉处存在控件。

test1、test2是属于layer0的控件。当鼠标落在它上面时,会draw该控件,但不会自动draw覆盖它上面的上层layer1,导致露出本该被layer1挡住的test1、test2的下半部。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2024-5-20 02:30 , Processed in 0.056084 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表