派生社区 Python GUI 编程课程(下卷):06. 事件过滤器

[复制链接]
作者: ika | 时间: 2020-12-29 16:35:24 | 高级编程|
10 239
发表于 2020-12-29 16:35:24| 显示全部楼层 |阅读模式


前情回顾:

派生社区 Python GUI 编程课程(下卷):05. 常用样式实战
https://bbs.266.la/forum.php?mod=viewthread&tid=1084
(出处: 派生社区)






网盘下载地址:

游客,如果您要查看本帖隐藏内容请回复



一、隐藏标题栏
setWindowFlags=放置寄存器
Qt.FramelessWindowHin=无边框窗口
[Python] 纯文本查看 复制代码
#在test(QWidget):中调用函数self.init_ui()
#初始化代码,并调用此代码    
    def init_ui(self):
        self.setWindowFlags(Qt.FramelessWindowHint)    #隐藏标题栏

二、自定义窗口移动
installEventFilter=加载事件过滤器
QEvent.MouseButtonPress=鼠标按下事件
QEvent.MouseButtonRelease=鼠标释放事件
QEvent.MouseMove=鼠标移动事件
eventFilter()=事件过滤窗
event.type()=事件类型
event.globalPos()=全局位置
[Python] 纯文本查看 复制代码
#初始化代码,并调用此代码    
    def init_ui(self):
        self.installEventFilter(self)    #添加事件过滤窗
​
​
    def eventFilter(self,obj,event) -> bool:
        if obj is self:
            if event.type() ==QEvent.MouseButtonPress:
                print('鼠标按下')
                self._old_pos = event.globalPos()
            elif event.type() ==QEvent.MouseButtonRelease:
                print('鼠标释放')
                self._old_pos = None
            elif event.type() ==QEvent.MouseMove:
                print('鼠标移动')
                self.mouse_move_event(event)
​
        return super(test,self).eventFilter(obj,event)
    def mouse_move_event(self,event):
        if not self._old_pos:       #但没有鼠标按下时返回掉
            return
​
        delta_x = event.globalPos().x() - self._old_pos.x() #计算鼠标按下和释放的偏移
        delta_y = event.globalPos().y() - self._old_pos.y()
        self.move(self.x() + delta_x,
                  self.y() + delta_y)
​
        self._old_pos = event.globalPos()
        pass

评分

参与人数 1好评 +1 金币 +10 收起 理由
大司命 + 1 + 10 感谢发布原创作品,派生因你更精彩!

查看全部评分

签到天数: 8 天

发表于 2021-1-19 17:46:02| 显示全部楼层
期待期待,感谢分享
回复

使用道具 举报

签到天数: 1 天

发表于 2021-1-12 22:06:19| 显示全部楼层
有源码下载吗?
回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 3 天

发表于 2021-1-5 23:15:17| 显示全部楼层
ika 发表于 2021-1-5 23:13
初学建议把上卷看完,巩固一下基础。完整课程目录:https://bbs.266.la/forum.php?mod=viewthread&tid=42 ...

好的,谢谢!
回复

使用道具 举报

签到天数: 24 天

 楼主| 发表于 2021-1-5 23:13:51| 显示全部楼层
Edgar 发表于 2021-1-5 22:29
新手,主要啥都不懂,下次希望顺便带一下,对了,还有代码的话,尽量能贴的话,贴一下吧,因为您的视频是 ...

初学建议把上卷看完,巩固一下基础。完整课程目录:https://bbs.266.la/forum.php?mod=viewthread&tid=429

项目源码会在近日内放出
回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 3 天

发表于 2021-1-5 22:29:27| 显示全部楼层

ika 发表于 2021-1-5 21:44
class Login(QWidget)  你是说这里面的QWidget吗,这个是Qt小部件的类是有讲的呀,Login继承了QWidget, ...

新手,主要啥都不懂,下次希望顺便带一下,对了,还有代码的话,尽量能贴的话,贴一下吧,因为您的视频是剪辑过的,而且代码在讲课之前是有改动的,这样就算您在教程里边没讲,我们也可以看代码自行百度一下

点评

ika
初学建议把上卷看完,巩固一下基础。完整课程目录:https://bbs.266.la/forum.php?mod=viewthread&tid=429 项目源码会在近日内放出  详情 回复 发表于 2021-1-5 23:13
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 17 天

发表于 2021-1-5 22:08:41| 显示全部楼层
建议讲到哪里把代码发一份
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 17 天

发表于 2021-1-5 22:06:52| 显示全部楼层
感谢发布原创作品,派生因你更精彩!
回复

使用道具 举报

签到天数: 24 天

 楼主| 发表于 2021-1-5 21:44:41| 显示全部楼层
Edgar 发表于 2021-1-5 20:50
从第六节开始,class Login()里边的根本就没讲过什么意思,是不是后边应该补讲一下? ...

class Login(QWidget)  你是说这里面的QWidget吗,这个是Qt小部件的类是有讲的呀,Login继承了QWidget,只要是派生的部件都要继承这个类,固定写法,Qt Creator也会自动生成代码这个不用太纠结
回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 3 天

发表于 2021-1-5 20:50:53| 显示全部楼层
从第六节开始,class Login()里边的根本就没讲过什么意思,是不是后边应该补讲一下?

点评

ika
class Login(QWidget) 你是说这里面的QWidget吗,这个是Qt小部件的类是有讲的呀,Login继承了QWidget,只要是派生的部件都要继承这个类,固定写法,Qt Creator也会自动生成代码这个不用太纠结  详情 回复 发表于 2021-1-5 21:44
回复

使用道具 举报

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

本版积分规则

!jz_fbzt! 快速回复 !jz_sctz! !jz_fhlb! 按钮
快速回复 返回列表 返回顶部