首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt 常用类 (9)—— QWidget

注意:不要在 moveEvent 或 resizeEvent 两个事件处理函数设置几何参数,否则将导致无限循环。        ...捕获了键盘事件的窗口将得到所有键盘事件,而其他窗口将完全得到不到键盘事件,直到捕获了键盘事件的窗口释放键盘事件。...;          // 捕获鼠标事件   void releaseMouse();    // 释放鼠标事件           对键盘事件和鼠标事件捕获是相互独立的。...这里要注意两点:一是如果有另外一个窗口进行了捕获操作,则当前处于捕获状态的窗口将失去对事件捕获;二是只有可见的窗口才能进行输入事件捕获。        ...[plain] view plaincopy int key() const;     // 得到键值             鼠标事件:          [plain] view

3.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

Qt事件系统与应用举例

概述 在Qt事件都是从抽象类QEvent派生出来的对象。它们表示发生在应用程序内部或由于应用程序需要了解的外部活动而发生的事情。...一些,例如QTimerEvent ,来自其他来源;有些来自应用程序本身,自定义事件等。 3....如果您没有在虚拟函数的实现执行所有必要的工作,则可能需要调用基类的实现。 5. 事件过滤器 6. 发送事件 7. 小结 Qt的主函数中会开启一个事件循环,其实就是一个处理事件的while循环。...,被窗口焦点优先捕获 QKeyEvent *ke = static_cast(event); if (ke->key() == Qt::Key_Tab...③event 所有产生的事件都会进入这里面,根据需要自行处理 本来想捕获Tab键来着,结果无法捕获,因为被窗口焦点优先捕获。 所以捕获了Delete键 ④自定义事件的使用 效果: ?

1.6K30

浅谈基于QT的截图工具的设计与实现

case Qt::Key_Up: y_ -= 5; break; case Qt::Key_Down: y_ += 5; break; case Qt::Key_Left...首先讲解第一部分:捕获指定区域所需要的数据。这里我使用了三组数据,分别是:鼠标按下的起始位置、鼠标当前的位置、是否处于捕获状态。...注意事项2:在QT,mouseMoveEvent并不是随时都在触发,该事件默认只有在鼠标按下以后的移动过程才会触发,QT这样设计考虑的点是因为鼠标的移动是很频繁的,随时触发会降低性能。...如果你在某些场景下就是需要随时出发移动事件,需要在控件的构造函数调用"setMouseTracking(true);"(可以看代码清单图中11行)。 区域捕获到这里就结束了吗?非也。...(); } 注意,QT回车键的枚举值是Key_Return,不是Key_Enter。

29020

PyQt5实现仿QQ贴边隐藏功能的实例代码

变换颜色思路 QPalette( [ˈpælət] 调色板)类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象对各部分各状态下的颜色的描述来进行绘制...实现代码 鼠标进入事件,调用hide_or_show判断是否该显示 def enterEvent(self, event): self.hide_or_show('show', event) 鼠标离开事件...,调用hide_or_show判断是否该隐藏 def leaveEvent(self, event): self.hide_or_show('hide', event) 鼠标点击事件 def mousePressEvent...( ).topLeft() QApplication.postEvent(self, QEvent(174)) event.accept() 捕捉鼠标移动事件 def mouseMoveEvent...| Qt.WindowStaysOnTopHint | Qt.Tool) # 去掉标题栏 self.widget = QWidget() self.Layout = QVBoxLayout(self.widget

79020

python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析

:widget显示与隐藏 窗口事件:窗口是否为当前窗口 还有一些常见的qt事件,比如Socket事件,剪切板事件,字体改变事件,布局改变事件 使用事件处理的方法 pyqt提供如下5事件处理和过滤的方法...,QApplication的事件过滤器将捕获所有的QObject事件,而且第一个获得该事件,也就是说,在将事件发送给其他任何一个事件过滤器之前,都会发送给QApplication的事件过滤器 5 、重新实现...QApplication的notify()方法 pyqt使用notify来分发事件,要想在任何事件处理器之前捕获事件,唯一的方法就是重新实现QApplication的notify(),在实践,在调试才会用这中方法...): self.key = "在event()捕获Tab键" self.update() return True return QWidget.event(self, event) if __name...): self.key = "在event()捕获Tab键" self.update() return True return QWidget.event(self, event) ?

2.5K21

Python Qt GUI设计:5种事件处理机制(提升篇—3)

QApplication的notify()方法 之前在Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8),我们已经简单讲到,PyQt为事件处理提供了两种机制...() == Qt.Key_Tab): self.key = "在event()捕获Tab键" self.update() return...eventFilter,在这个函数我们可以抛弃或者修改这些事件,比如可以对自己感兴趣的事件使用自定义的事件处理机制,对其他事件使用默认的事件处理机制。...这种方法比2.3、安装事件过滤器更强大,QApplication的事件过滤器将捕获所有QObject的所有事件,而且第一个获得该事件。...,要想在任何事件处理器之前捕获事件,唯一的方法就是重新实现QApplication的notify(),在实践,在调试时才会使用这种方法,实际基本用不多,这里不再赘述了。

2.1K30

eBPF 开发实践:使用 eBPF 隐藏进程或文件信息

下面,我们会详细介绍如何在内核态和用户态编写 eBPF 程序来实现进程隐藏。内核态 eBPF 程序实现接下来,我们将详细介绍如何在内核态编写 eBPF 程序来实现进程隐藏。...程序的 "target_ppid" 和 "pid_to_hide_len"、"pid_to_hide" 是几个重要的全局变量,它们分别存储了目标父进程的 PID、需要隐藏的 PID 的长度以及需要隐藏的...在这个过程,我们每隔一段时间就检查一次环形缓冲区是否有新的事件。如果有,我们就调用 handle_event 函数来处理这个事件。printf("Successfully started!...这个函数的参数包括一个上下文,事件的数据,以及数据的大小。我们首先将事件的数据转换为 event 结构体,然后根据 success 字段判断这个事件是否表示成功隐藏了一个进程,最后打印相应的消息。...这个过程,我们使用了 eBPF 提供的一些高级功能,环形缓冲区和事件处理,这些功能使得我们能够在用户态方便地与内核态的 eBPF 程序进行交互。

42610

eBPF 开发实践:使用 eBPF 隐藏进程或文件信息

下面,我们会详细介绍如何在内核态和用户态编写 eBPF 程序来实现进程隐藏。 内核态 eBPF 程序实现 接下来,我们将详细介绍如何在内核态编写 eBPF 程序来实现进程隐藏。...程序的 “target_ppid” 和 “pid_to_hide_len”、“pid_to_hide” 是几个重要的全局变量,它们分别存储了目标父进程的 PID、需要隐藏的 PID 的长度以及需要隐藏的...在这个过程,我们每隔一段时间就检查一次环形缓冲区是否有新的事件。如果有,我们就调用 handle_event 函数来处理这个事件。 printf("Successfully started!...这个函数的参数包括一个上下文,事件的数据,以及数据的大小。我们首先将事件的数据转换为 event 结构体,然后根据 success 字段判断这个事件是否表示成功隐藏了一个进程,最后打 印相应的消息。...这个过程,我们使用了 eBPF 提供的一些高级功能,环形缓冲区和事件处理,这些功能使得我们能够在用户态方便地与内核态的 eBPF 程序进行交互。

30910

使用QT创建系统托盘

使用QT来创建一个系统托盘,事实上是一件很简单的事。为什么这么说?一是因为QT文档给出了比较详细的例子,二是QT的结构比较优雅,设计风格统一。但是在动手之前,我们要从哪里下手?...虽然QT文档给出了一个比较详细的例子,但由于功能较多,所以看起来比较费劲。我们在这只是抽丝剥茧,只实现系统托盘这一个功能。...但是如果在上述构造函数没有加showMessage()这个函数,将不会出现托盘气球提醒。我们就模仿程序后台运行时的提醒效果吧。那么,我们只需重写closeEvent()事件即可。...如下编写代码: if(systemTray->isVisible()) { hide(); systemTray->showMessage("Tips",...最后调用ignore()函数忽略事件,以防止该事件继续传递。效果如下图: ? 功能完成,再看看上下文菜单的样子: ? 至此,简单的系统托盘功能完成。

2.3K80

Qt Designer的QWidget属性表介绍

在模式窗口可见时更改此属性无效,必须先调用hide()隐藏模式窗口,然后再调用show()显示模式窗口。...如果部件需要知道它何时被启用或禁用,则可以使用changeEvent()方法来捕获事件事件类型设置为QEvent.EnabledChange ---- 禁用一个部件时,会隐式的禁用其所有子部件; 启用部件时...如果部件启用了平板跟踪功能,部件能接收触控笔靠近但未真正接触平板时的触控笔移动事件,这可以用于监视操作位置以及部件的辅助操作功能(旋转和倾斜),并为图形界面提供这些操作的信息接口。...---- 注意: 1、若当前部件是一个桌面(windowType() == Qt.Desktop), 并且此时有另一应用,正在使用这个桌面,则这个属性设置可能失效; 2、不要在拖、放事件的处理方法修改该属性...---- 如果要控制tooTip显示的行为(控制显示位置),可以重写部件的event()方法捕获事件类型为QEvent.ToolTip的事件

10.2K20

挑战任务: PyQt5编写GUI界面

挑战内容 前面我们学习的OpenCV内容都是运行在命令行的,没有界面,所以本次的拓展挑战内容便是: 了解Python编写GUI界面的方法,使用PyQt5编写如下的图像处理应用程序,实现打开摄像头、捕获图片...其实Python支持多种图形界面库,Tk(Tkinter)、wxPython、PyQt等,虽然Python自带Tkinter,无需额外安装包,但我更推荐使用PyQt,一是因为它完全基于Qt,跨平台,功能强大...这种函数就称为事件Qt称为槽连接。...,参看下面动图: 在弹出的配置窗口中,可以看到左侧是按钮的常用事件,我们选择点击事件"clicked()",然后添加一个名为"btnOpenCamera_Clicked()"的槽函数: 重复上面的步骤..., Qt.SmoothTransformation)) @QtCore.pyqtSlot() def _queryFrame(self): ''' 循环捕获图片

2K20

PyQt 键盘事件和鼠标事件

PyQt为拦截和处理事件提供了5种不同的方式,这里只介绍最常用的头两种方式。 第一种是重新实现特定事件键盘和鼠标事件、重绘事件、尺寸大小改变事件等等,的处理程序。可参见代码示例。...重新实现这个方法,可以允许我们处理那些不能在某一特定事件处理程序(如对Tab键焦点转换行为的重新定义)处理的事件,或者实现那些不存在明确事件处理程序的事件,比如QEvent.ToolBarChange...def keyPressEvent(self, event): key = event.key() if Qt.Key_A <= key <= Qt.Key_Z...,Qt.Key_Tab,Qt.Key_Backspace,Qt.Key_Return,Qt.Key_Enter, Qt.Key_Insert,Qt.Key_Delete,Qt.Key_Pause...,Qt.Key_Print,Qt.Key_F1...Qt.Key_F12, Qt.Key_Space,Qt.Key_0...Qt.Key_9,Qt.Key_Colon,Qt.Key_Semicolon

6.3K20

使用PyQt的QLabel组件实现选定目标框功能的方法示例

问题背景   基于PyQt5开发了一个可以用于目标跟踪的软件,在开发过程遇到一个问题,就是如何在PyQt5的组件QLable自主选定目标框,这个在opencv里面有专门的函数完成这个工作:cv2.selectROI...(),我的目的就是在QLabel的基础上,实现类似函数cv2.selectROI()的功能,这样在运行程序的过程,就能在视频框里面直接选取感兴趣区域。...子类的命名为Label,继承自QLabel类,在子类重写鼠标事件函数,接受鼠标在Label对象上位置信号。...当键盘事件为真的是才有键盘事件监控 if QKeyEvent.key() == Qt.Key_S: self.label_show.setCursor(Qt.CrossCursor)...() == Qt.Key_Q: # 按下'q'键键盘监控关闭 self.label_show.unsetCursor() self.label_show.draw_roi_flag

2.6K10
领券