PyQt/窗口/README.md

48 lines
1.7 KiB
Markdown
Raw Normal View History

2018-10-28 00:24:47 +08:00
# 重启窗口Widget
# 截图
![截图](ScreenShot/窗口重启.gif)
# 分割窗口的分割条重绘
原理在于QSplitter在创建分割条的时候会调用createHandle函数
于是通过重新写createHandle返回自己的QSplitterHandle类
并通过QSplitterHandle的paintEvent实现绘制其它形状
重写mousePressEvent和mouseMoveEvent来实现鼠标的其它事件
## 截图
![截图](ScreenShot/分割窗口的分割条重写.gif)
# 简单的窗口贴边隐藏
## 大概思路
- 1.思路是当窗口进入左边,顶部,右边一半时,此时判断窗口的坐标
- 2.如果窗口的x坐标小于0 则需要隐藏到左边
- 3.如果窗口的y坐标小于0 则需要隐藏到顶部
- 4.如果窗口的x坐标大于屏幕宽度-窗口宽度/2 则需要隐藏到右边
## 事件
- 1.mousePressEvent鼠标按下事件主要记录按下的坐标
- 1.mouseMoveEvent鼠标移动事件用于移动窗口
- 1.mouseReleaseEvent鼠标弹起事件用于判断是否需要隐藏窗口
- 1.enterEvent鼠标进入事件用于窗口隐藏后是否需要暂时显示预览
- 1.leaveEvent鼠标离开事件用于窗口暂时显示后自动隐藏效果
2018-10-28 16:36:14 +08:00
# 内嵌外部窗口
### 原理思路:
- 1.使用SetParent函数设置外部窗口的parent为Qt的窗口
- 2.Qt使用QWidget.createWindowContainer(QWindow.fromWinId(窗口ID))生成QWidget
- 3.使用GetWindowLong得到原来窗口的样式属性style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)和exstyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
- 4.这里还原窗口后不会显示用spy++发现没有了WS_VISIBLE样式未解决
截图
![1](ScreenShot/嵌入外部窗口.gif)