PySide6 监测设备变更事件

发布于:2025-04-12 ⋅ 阅读:(39) ⋅ 点赞:(0)

        在PySide6中监听系统事件,判断是否有串口设备插拔,进而当串口状态变更时,实现列表数据实时更新。

        在Qt中,可以使用 nativeEvent 接口来完成这一操作:

[virtual protected] bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)

This special event handler can be reimplemented in a subclass to receive native platform events identified by eventType which are passed in the message parameter.

In your reimplementation of this function, if you want to stop the event being handled by Qt, return true and set result. The result parameter has meaning only on Windows. If you return false, this native event is passed back to Qt, which translates the event into a Qt event and sends it to the widget.

Note: Events are only delivered to this event handler if the widget has a native window handle.

Note: This function superseedes the event filter functions x11Event(), winEvent() and macEvent() of Qt 4.

Platform

Event Type Identifier

Message Type

Result Type

Windows

"windows_generic_MSG"

MSG *

LRESULT

macOS

"NSEvent"

NSEvent *

XCB

"xcb_generic_event_t"

xcb_generic_event_t *

直接上代码: 

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

    def nativeEvent(self, event_type, message):
        if event_type == "windows_generic_MSG":
            msg = wintypes.MSG.from_address(message.__int__())
            if msg.message == win32con.WM_DEVICECHANGE:
                # 添加设备变更的处理

        return super(QMainWindow, self).nativeEvent(event_type, message)


网站公告

今日签到

点亮在社区的每一天
去签到