Qt第四十八章:成功、警告、信息、错误 弹窗组件

目录

预览:

 组件:

资源: 


预览:

 组件:message_dialog.py

# 消息提示
from PySide6 import QtCore
from PySide6.QtCore import Qt, QTimer, QSize, QPropertyAnimation, QEasingCurve, QRect
from PySide6.QtGui import QPixmap, QFont, QIcon, QCursor, QGuiApplication
from PySide6.QtWidgets import QWidget, QApplication, QLabel, QHBoxLayout, QVBoxLayout, QDialog, QPushButton, \
    QSpacerItem, QSizePolicy
import resource_rc


# UI
class UiMessageDialog(object):
    def setup_ui(self, parent: QDialog):
        # 隐藏标题栏
        parent.setWindowFlags(
            Qt.Window
            | Qt.FramelessWindowHint
            | Qt.WindowSystemMenuHint
            | Qt.WindowMinimizeButtonHint
            | Qt.WindowMaximizeButtonHint
        )
        # 背景透明
        parent.setAttribute(Qt.WA_TranslucentBackground)
        # 背景板
        self.bg_widget = QWidget(parent)
        self.bg_widget.setAttribute(Qt.WA_QuitOnClose, True)

        # 背景色
        self.bg_widget.setStyleSheet("background-color:rgb(240,249,235);border-radius:5px")

        # 水平布局
        self.layout = QHBoxLayout(self.bg_widget)

        # 文字控件
        self.label_message = QLabel(self.bg_widget)
        # 文字样式
        self.label_message.setFont(QFont('times', 14, QFont.Black))
        # 图标控件
        self.label_icon = QLabel(self.bg_widget)
        # 图标大小
        self.label_icon.setMaximumSize(32, 32)
        # 关闭按钮
        self.button_close = QPushButton(parent.accept())
        # 按钮大小
        self.button_close.setMaximumSize(32, 32)
        # 按钮图标
        icon_close = QIcon()
        icon_close.addFile(u":/message/icons/close-32.png", QSize(), QIcon.Normal, QIcon.Off)
        self.button_close.setIcon(icon_close)
        # 显示小手
        self.button_close.setCursor(QCursor(Qt.PointingHandCursor))

        self.layout.addWidget(self.label_icon)
        self.layout.addWidget(self.label_message)
        # 放个弹簧,关闭按钮挤到最右边
        self.layout.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
        self.layout.addWidget(self.button_close)


# 逻辑
class MessageDialog(QDialog, UiMessageDialog):
    def __init__(self, parent=None):
        super(MessageDialog, self).__init__(parent=parent)
        # 计算位置
        widgets = QApplication.topLevelWidgets()
        # 同类弹窗数量
        self.brother_count = len([w for w in widgets if type(w) == MessageDialog]) - 1
        # 屏幕中心点位置
        self.screen_center_point = QGuiApplication.primaryScreen().availableGeometry().center()
        self.setup_ui(self)
        # 按钮点击事件
        self.button_close.clicked.connect(self.close_dialog)

    def success(self, message: str = '成功', duration=3000):
        # 根据文字设置宽度
        self.bg_widget.resize(100 + len(message) * 20, 50)
        # 根据弹窗数量设置弹窗位置
        self.setGeometry(self.screen_center_point.x() - self.bg_widget.width() / 2,
                         (self.bg_widget.size().height() + 5) * self.brother_count, self.bg_widget.size().width(),
                         self.bg_widget.size().height())
        self.label_message.setText(message)
        self.label_icon.setPixmap(QPixmap(":/message/icons/success-fill-32.png"))
        self.button_close.setFlat(True)
        timer = QTimer(self)
        timer.singleShot(duration, lambda: self.close_dialog())
        self.open_animation()
        self.show()

    def warning(self, message: str = '警告', duration=3000):
        # 根据文字设置宽度
        self.bg_widget.resize(100 + len(message) * 20, 50)
        # 根据弹窗数量设置弹窗位置
        self.setGeometry(self.screen_center_point.x() - self.bg_widget.width() / 2,
                         (self.bg_widget.size().height() + 5) * self.brother_count, self.bg_widget.size().width(),
                         self.bg_widget.size().height())
        self.label_message.setText(message)
        self.label_icon.setPixmap(QPixmap(":/message/icons/warning-32.png"))
        self.button_close.setFlat(True)
        timer = QTimer()
        timer.singleShot(duration, lambda: self.close_dialog())
        self.open_animation()
        self.show()

    def information(self, message: str = '温馨提示', duration=3000):
        # 根据文字设置宽度
        self.bg_widget.resize(100 + len(message) * 20, 50)
        # 根据弹窗数量设置弹窗位置
        self.setGeometry(self.screen_center_point.x() - self.bg_widget.width() / 2,
                         (self.bg_widget.size().height() + 5) * self.brother_count, self.bg_widget.size().width(),
                         self.bg_widget.size().height())
        self.label_message.setText(message)
        self.label_icon.setPixmap(QPixmap(":/message/icons/information-32.png"))
        self.button_close.setFlat(True)
        timer = QTimer()
        timer.singleShot(duration, lambda: self.close_dialog())
        self.open_animation()
        self.show()

    def error(self, message: str = '错误', duration=3000):
        # 根据文字设置宽度
        self.bg_widget.resize(100 + len(message) * 20, 50)
        # 根据弹窗数量设置弹窗位置
        self.setGeometry(self.screen_center_point.x() - self.bg_widget.width() / 2,
                         (self.bg_widget.size().height() + 5) * self.brother_count, self.bg_widget.size().width(),
                         self.bg_widget.size().height())
        self.label_message.setText(message)
        self.label_icon.setPixmap(QPixmap(":/message/icons/error-32.png"))
        self.button_close.setFlat(True)
        timer = QTimer()
        timer.singleShot(duration, lambda: self.close_dialog())
        self.open_animation()
        self.show()

    def test(self):
        print(1)
        self.show()

    def close_dialog(self):
        self.close_animation()

    # 出现动画
    def open_animation(self):
        # 动画(必须声明为QWidget的属性)
        self.animation = QPropertyAnimation(self.bg_widget, b'geometry')
        # 持续时间
        self.animation.setDuration(1000)
        # 重复次数
        self.animation.setLoopCount(1)
        # 速度曲线(弹性效果)
        self.animation.setEasingCurve(QEasingCurve.InOutElastic)
        # 开始时属性值
        self.animation.setStartValue(QRect(self.bg_widget.x(), self.bg_widget.y() - self.bg_widget.height(),
                                           self.bg_widget.width(), self.bg_widget.height()))
        # 结束时属性值
        self.animation.setEndValue(QRect(self.bg_widget.x(), self.bg_widget.y(),
                                         self.bg_widget.width(), self.bg_widget.height()))
        # 开始
        self.animation.start()

    # 消失动画
    def close_animation(self):
        # 动画(必须声明为QWidget的属性)
        self.animation = QPropertyAnimation(self.bg_widget, b'geometry')
        # 持续时间
        self.animation.setDuration(1000)
        # 重复次数
        self.animation.setLoopCount(1)
        # 速度曲线(弹性效果)
        self.animation.setEasingCurve(QEasingCurve.InOutElastic)
        # 开始时属性值
        self.animation.setEndValue(QRect(self.bg_widget.x(), self.bg_widget.y() - self.bg_widget.height(),
                                         self.bg_widget.width(), self.bg_widget.height()))
        # 结束时属性值
        self.animation.setStartValue(QRect(self.bg_widget.x(), self.bg_widget.y(),
                                           self.bg_widget.width(), self.bg_widget.height()))
        # 开始
        self.animation.start()
        # 动画结束后,执行其他函数
        self.animation.finished.connect(lambda: print(3))

    """
    重写鼠标事件来移动窗口
    """

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:
            self.m_flag = True
            self.m_Position = event.globalPosition().toPoint() - self.pos()  # 获取鼠标相对窗口的位置
            event.accept()

    def mouseMoveEvent(self, mouse_event):
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(mouse_event.globalPosition().toPoint() - self.m_Position)  # 更改窗口位置
            mouse_event.accept()

    def mouseReleaseEvent(self, mouse_event):
        self.m_flag = False
        mouse_event.accept()


# 测试类
class TestWidget(QWidget):
    def __init__(self):
        super(TestWidget, self).__init__()
        layout = QHBoxLayout(self)
        button_0 = QPushButton("成功")
        button_0.clicked.connect(lambda: MessageDialog().success(message="登录成功", duration=3000))
        button_1 = QPushButton("警告")
        button_1.clicked.connect(lambda: MessageDialog().warning(message="警告成功", duration=3000))
        button_2 = QPushButton("提示")
        button_2.clicked.connect(lambda: MessageDialog().information(message="提示信息", duration=3000))
        button_3 = QPushButton("错误")
        button_3.clicked.connect(lambda: MessageDialog().error(message="错误信息", duration=3000))
        layout.addWidget(button_0)
        layout.addWidget(button_1)
        layout.addWidget(button_2)
        layout.addWidget(button_3)


if __name__ == '__main__':
    app = QApplication([])
    widget = TestWidget()
    widget.show()
    app.exec()

资源: resource_rc.py

# Resource object code (Python 3)
# Created by: object code
# Created by: The Resource Compiler for Qt version 6.4.0
# WARNING! All changes made in this file will be lost!

from PySide6 import QtCore

qt_resource_data = b"\
\x00\x00\x03R\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x03\
\x0cIDATXG\xcdWKh\x13Q\x14=w\
\xa4\x98XQpaI\xc6\x8d\x88;\x11\xa1\xf5;S\
\x15,b\x15\xd1E)\x82\xcd\xc4]\xc1\x0a\x8a\x88\x95\
\x16\x14\x85\x8a\x8a\x88\x82\x15\xba3\x93\x0aR\x5c(\xe2\
\x07\xa9\xa0v\xc6o\x0bE\xdc\x89\xb8q\x12\xda\x85\xa0\
X\x13)\xce\x95\x99d\xd2L\x9b4oj\xa0\xcd*\
$\xf7\x9e{\xde\xfd\xbc{\x1ea\x9e?4\xcf\xf1!\
L\xe0s\xff\xe6eK\xfe\xd6l\x02q\xa3\x04Ie\
\xe6:\x10V\xba\x07`\x8c\x13\xd1\x98\x0d\xdb\x00\xd3\xd0\
\xefE\x93\xef\xd7\xb6\xbd\xfb)r\xb8\x8a\x04\xb8\xaf\xbe\
&\x1d\x0eu\x80\xe8(\x18\xb2\x08(\x08\x16\x98oE\
2\xd9^j\x1f\x99\x9c\xcdgV\x02\x96\xae\xee'\xe0\
\x0c\x80\x0dB\x81g\x1a\x8d2pI\xd6\x8c\x87\xe5\xfc\
\xcb\x12\xb0\x92\xca1b\xba<\xc7\xc0>7&\xee\x94\
c\xe6\xcdRX%\x09\xa4\xfb\x95f\xb6\xe9^5\x82\
{\x18$qK\xa4\xcd|2\x1ds\x06\x81\x94\xae4\
\x00\xf4\xb2\x9a\xc1\xa7\xb0xGT3\x87\x8b\xb1}\x04\
r\x0d\x17~!Rs\x22<\xb6m\xe9\xa2\x03&I\
v\x173\xf6\x0a\x90\x1e\x8dd2;\x8b\x1b\xd3G \
\xa5+'\x00\xea\x11\x00\x02\x88z\xa2\xb1!\x97@*\
\xd9\xd8\x05\xe6n!?pwT3\xaf\x17J\xe3}\
\xf9>\xd0\xb4<\xfb'\xfbAt\xd4\x88\xb9%\x12\xcf\
\xd54\x9dP\x9a\x99\x04{\x86`\x85\x16\x876\xaeh\
\x1d\xfc\xe1\xf8\x162\x90\x1f\xb9\xbbb\xa7\x00l\xd8\x1d\
\xab\xb4\xd7\xb7\x1d\xfbo\xfa\xb6#\x12\xa4^Q_\x06\
\x0ey\xa39E \xa9\x5c!\xa6\x0ea\x10\xc6\x059\
n\xb8cj%\xd4N\x22\x9c\x15\xf6%\xee\x95c\xe6\
i_\x06\xd2z\xe3s\x06o\x11\x05\x01\xb8/\xaa\x99\
'\xdd\x1e\xd0\x95k\x00\xb5\x8b\xfa\x12\xe8mD\x1b\xda\
\xe5#\x90J\xa8\x9f@X-\x0a\xc2\xc0}Y3\x0e\
\xbb\x19\xd0\xd5;\x04\x1c\x14\xf5\x05\xe3k4n\xac\xf3\
\x13\xd0\xd5q\x00\xb5\xa2 \xccx#\xc7\x8d\xa6|\x09\
\x06\x89\xb0U\xd4\x17\xc0DT3\xdcEV\xe8\x81T\
@\x02D\xf8\x12\x89\x19\xeb\xdd)H\xaa\x1f\x99\xb1\xe6\
\xff\x08\x04,\x01\x01\xbf\x22\x9aQ\xe7\x12\xd0\xd51\x06\
\x96\x0a\x13(U\x82\xe0M\xe8\xe4\x8f\xf7\xb8A\x99\x9e\
\x0a\x07w\xd3^\xa2\x09-]9O\xa0SA\x80\xe6\
j\xcb\xe0\xab\xb2f\x9e\xf3_D\x09\xb5\x89\x08\x0f\x82\
\x81R&g\xcf\xe1 ~\xcc8 \xc7\x8dA\x1f\x01\
Gr\xd5r\xcd\xb0\xe8U\x0c\xe0QT3Zs\xf7\
\x80:\x00`\x9f\x10\x09\x825A\x93\x0d\x9ed[8\
\xcb\xc8Md\x80u\x0c\xe0\x19 u\xe5Nm;[\
q\xb7@\x06f_\xc7\xf9[\xcd\xd1\x81\xc2KI \
h\xc1\xa4x\x09y?\x96\x94d\xd5\xd4\x83^\xa0r\
\xba\xb0\xac(\xad\xa6.,\xa7\x07}SP*\x95y\
}xCD\xa2\x95)\xc5(\xc0\xc7\xa7\xeb\xc0b\xdb\
\x85\xfd0)f\xeaH\xb6L6\xbb\xdd}\x9a\xb1T\
_\xf2iF\xf6\x88\xf34\x0b\x87B\xaf<\xc9U\xa9\
I+f\xa0\x12\xc0\xff\xfe?\xef\x04\xfe\x01\xd5[G\
0\x98R\x0b:\x00\x00\x00\x00IEND\xaeB`\
\x82\
\x00\x00\x01\x9d\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x01\
WIDATXG\xed\x961N\xc40\x10E\xff\
,{\x1ah\xe9\x81\x16\x89P9\xa4\xe4&,'A\
\xa2Y\xb0\x0b\x04H\xdc\x82\x12.B\x0b\x18E\x1b\xa4\
\xc4k\xc73cKKA\xba\xc8\xb2\xdf\xf3\xd83c\
\xc2\x8e?\xda1\x1f\x7fK`\xed\x1e\x8e\x17X\x1e\x91\
\xdfsm{\xfa^3:w\xee\xd1\xf4\xebu\xe6\xdc\
\x8d\xd7\x9dD\xe0\xde=_y\xf8\x15\x80\xb7\x85_\xb6\
\xb5$F\xeb\xa23\xcd\x849\xf9\xb1\xf6e\xff\x9b>\
-\x80\x83Z\x12c8\x81V\x17\xe6\xec:\x19\x81~\
\xa0\xa6D\x0e\xde\xf3\xa2\x97\xb0\x86\x04\x07\x9e\x14(\x8d\
\x04\x17>+\xa0\x95\x90\xc0\xb3\x02R\x09)\x9c%\xc0\
\x95\xd0\xc0\xd9\x029\x09-\x5c$\x90\x92\xf0\xf4e\x86\
\xe2\x85X\x9e\xe7\xaa\xa9\xb8\x17\x84):\x14-\x15\x5c\
\x1c\x81\xdf\xdd\x04\x12j\xb8Z`|\xe6\x83\x94\xbaw\
\x88\x8f \xbcp\x1e\xbe\xefr\xea\xde!\x12\x88\xdd\xf6\
\xd2\xb2\xcd\x16\x98K\xb5\x12\x09\x96\x00'\xcf\xb5\x12Y\
\x01\x0e<\x91\x1d\xac\x8b9+ \x81k%\x92\x02\x1a\
\xb8F\x22*P\x02\x97Jl\x09\xd4\x80K$&\x02\
k\xfbtI\x84\x9bM\x89\xdc~@\xe6\x1aKl<\
\xc8\x8e\xd7\xce4\x87\xc9G\xe9\xe6\xedN\xb6\x16<\x88\
\xc4-\x80\x8f\xce4'\xb3\xafb\xcd.K\xe6d\xeb\
@\xc9\xe2\x9c\xb9\xff\x02?\xbb\xecc0\xf9\x00\xc8*\
\x00\x00\x00\x00IEND\xaeB`\x82\
\x00\x00\x01r\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x01\
,IDAT8O\xad\x93\xb1J\xc4@\x10\x86\xff\
\x19\x04\x11;Q\xb4\xb0\xb8J\x11+\xb1V\xceF_\
\xc3F\xd6\x80\xc9]@\x9fB!^\x22\xc4\xc5\xc6\xc2\
\xce'\xd0F\xd0\xdaZ\xec\xae\xb0P\x90\xeb\x0e\x11t\
G.z\xc7fMR\x18\xb7\xd8bg\xfe\x8f\x7ff\
g\x085\x0f\xb9\xfa(J\x1b<\xc6\x1e\x08K\x10Z\
\xcd\xe2$\xf7\x10<\x98\x0f\x93\x86\xa1\xd7\xb559@\
\x14\xa7\xdbD|\x02`\xb2\xc4X_\xc4\xec\x85\x81w\
>\x8c\x8f\x00q|\xb6f\xc8\xdc:\xc2K\x80f\x00\
i\xda\xef,\xbc\x1e\x04;w\x99\xb9\xc1\xa5\xb5\x9e~\
{\xc7#\x08Svb\xdbW\x14%i\x93\xc079\
\xb0\xa071\x8eE\xa5\xd4k\x06\xe8$\xa7\x87\x02\xda\
/\xb0\xfd\x04`\xbe\xa8\x1c\x82\x1c\xb5\xfc\xdd\x83\x1f\x80\
\xbe\x12`\xd3M\x14\x98\x0d&^\x10\x81vc\x04\x5c\
\xb7|\xb5\x95\x01\x8e\x13\xfd\x0c`\xd6M*-\xe1;\
\xf1\xa5\xed\xab\xb9\xff\x01t\x92\xe2\x12\xaa\x1c\xe4J(\
kb5\xc0jb\xedo\x1ct\xa4h\x90Xd\xf9\
\x13\xbcB$\x17\x95\x834\x0c\xfe\x1aeB\x17\x82\x86\
%.\x1f\xe5\x11\xa4\xce2\xfde\xb3\xbf\x00\x18\xfa\x99\
\x11\x1c\xc9kX\x00\x00\x00\x00IEND\xaeB`\
\x82\
\x00\x00\x01b\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x01\
\x1cIDAT8O\xa5\x93\xbdJ\x03A\x14\x85\xbf\
\x1bu\x03\xa2\x85\x85\x85\xab\x88\x95\xac\x01\x1b\xc1\xc6Z\
\xf2\x02\xc1>v\x0a\x8a\xaf\x90wP\xd0N{\xb1\x11\
A\x10\xc1N\x04\xc1F\x88\xdb\xd8\xe9Z\xd9\xd9du\
s$?\xab\xee\xba\x11d\xa6\x1a\x86s\xbf3\xe7\xce\
\x1d\xc3q\x99c=\x85\x80\x99V\xb0(\xb3U\x89\xe5\
\x8e\x81\x19\xb7&]>\x95\xc3\xfb\xbc\xe1/\x80\xff\x1e\
T\xc1N\x10c\x19\xb1\xf1\x06\xaaE#\xe1\xc5\xcf\xf3\
\x0c\xc0\x8f\x83-\xb0\xdd\xbfci;\xf2\xc2\xbdT\xf3\
\x05\x98\x8a\x17\x96\x0c\xae\x81r!\xc0\xd4@\xb6\x03\x8c\
\x0aV^\xbc\x87\xbbn\xbcT<\x1dW6\x84\xf6\x07\
\x15K\x9c\x19v\x03\x0c\x1b\xb6\xf9\xec5\x0f2\x00?\
\xae\x1c\x82\xea]\x80q\x8cX\xeb\xed\xd5\xe8\x17_\x01\
\xe3=\x03;\x8a\xbc\xe6\xfa \xc0\x07\xedRM%\xcd\
\x99\xb5'\xfa\xc5\xe7\xc0\xe4\xf7\xed\x0a\x00\xb9\x08\xaf\x82\
j\x89$\x11C\xa7\xc0l\xb6\xf3\x05\x11\xf2M\x14<\
\x9aH0\xe6s}i\x156\xb1#rz\xc6\xd4\xc5\
i\x90R\x88\xd3(\xff\xf7s9\xff\xc6O\x9b\x86{\
\x11P~)\xf0\x00\x00\x00\x00IEND\xaeB`\
\x82\
\x00\x00\x03\x1e\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x02\
\xd8IDATXG\xc5\x97\xcfoLQ\x14\xc7\xbf\
\xe7j\x8by\x93\x88\x126\x08\xc5\x8a\x1d\x89J\xd8Y\
\xb0b\xe3g%,u\xe6M\x93.\x04\x7f\x81\x8aE\
\x93\xbe;\xd3.I\x94\xaa\x0d+\x16v$HXv\
\xd5\x1a\x8d\xd8\x10\xdaH\xe6\x8dh\xc7=r\xdft\xc6\
{o\xde\xaf\xf9!\xf3\x92\xd9\xcc=\xef\x9c\xcf99\
\xe7\xbc\xef%t\xf9\xa1.\xc7GS\x00\xe5\x5cn\x10\
\xcc\xa7\x01\xecb`/\x03\xfbu\x02\x04\xcc\x13\xf0\x11\
\xc0g\x10=KY\xd6\xdb\xa4\x89%\x02(e2'\
\x85\x10W\x18\xb8\x90\xc41\x013J\xa9\xfb\xe9B\xe1\
E\x9c}$\xc0\xcf\xd1\xd1\xfeu++\x93Dt.\
\xceQ\xd093\xcf\xfe\xe9\xeb\x1b\xde4>\xbe\x14\xf6\
~(@)\x97\x1b\x22\xe6{\x00zZ\x09\xeez\xa7\
\xc2DW\xd3\x965\x1d\xe4'\x10\xe0\xd7\xc8\xc81\xa5\
\xd4\xab6\x03{^\x17B\x1c\xdf81\xf1\xda\xef\xb3\
\x01\xe0[&\x93N\x0b\xf1\x9d\x81\xf5\x9d\x04 \xe0w\
I\xa9\xad\xdb\x0a\x85\x92\xdbo\x03\x80m\x9a\x93\x00\xae\
u2\xb8\xcb\xd7\x94!\xe5p(\x80\xeev\x12\xe2\xf9\
\x7f\x0a\xee\xb8e\xa5N\xb9\xa7\xc3S\x81\xb2i>\x8a\
\x19\xb590\x1b \xda\x1d\x08\xc9\xbc\x08\x22\x1b\xc0\x81\
\x88\xae\x9fIIy\xb1v^\x07\xd0K\x86\x99\xdfD\
d\xbf`H\xe9,\x1e\xdb4g\x01\x9c\xf5\xd9>1\
\xa4t\xc6\xd56\xcdy\x00\xfbB!\x88\x8e\xd6\x96\x95\
\x1b`\x8c\x99o\x84\x020/\x1a\xf9\xfc\x9e\xda\xb9\x0f\
\xa2\x1e\xdc\x01\xc8f?\x85VIoN\xa2;)\xcb\
\xba\xb9\xb6E\xab.C\xb2\xf2\xf3x\x03U+\x81Z\
\xe6\xad\xf8\xa9W\xc0\xcef\xdf\x83\xe8P\x82\x06\xf4@\
\xb8\xed\x13&\x010\x7f0\xf2\xf9\xc3\xfe\x0a\xe8u\xb9\
9\x01\x806i\x80H\x1c\xbc\x1a`\xd9\x90\xb2\xdf\x03\
P2\xcd\x1f\x048\x7f&x\xda\x02``)-\xe5\
\x16\x7f\x05\xf4'\xf4H+\xc1C\x1a3\xca\xd5;C\
\xcaA\x0f@\xd94\xa7\x19\xb8\x14\x03\xd0\x91&$\xe0\
aJ\xca!?\xc0m\x06\x9c\xd1\x08y\xbe\x18R\xee\
\x0c\xc9\xd6\x0f\x16\xd9O\x04\x8c\xa5\xa4\xbc\xe5\x05\x88_\
Ds\x86\x94\x07#F\xed\xdf\x22\x8a\x99(\x0aZD\
\xdaq\x82U\xbc\x00`\x03\x80\x1d!UZ\x06s1\
j\x9c\xb5Z\x0a\x5c\xc5\xdaa\xd7?F\x0eD6\xfb\
\xb8U\x09\x167AZ\xa2\xa5\xf3\xf9\xf3n\xbb\x06=\
\xa0u`\xcf\xea\xea\xd7\x0eH1?O\xa5\xd2\xdb\xbb\
\xdd\xaf\x0f\x03%\xd9\x9a\x1e|\x10\x97Q3\xe7Lt\
9H\x17\x86\x8aR\xad\x0bY\xa9\x97\xedJ3-\xc5\
H\x88\x13Az\xd03\x86A\xd9h}h\x08q\xb7\
\x0d\x896e+u\xdd\xaf\x03#{ \x08\xa4k\x17\
\x13?\x8cs5\x03\xce0\xf3\x00\xf4\x8fh\xc0\xb1\xa9\
\xce~\x91\x88\x8a\x00\x9ev\xfcj\xd6L\xb35k\x9b\
\xe8n\xd8\xac\xd3f\xec\xff\x02\x98\x12?0\xce\xa6*\
#\x00\x00\x00\x00IEND\xaeB`\x82\
\x00\x00\x01\x8b\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x01\
EIDAT8O\xa5\x93\xbbJ\xc4P\x10\x86\xe7\
?\x89\x0f\xe1SX\x89 \xe2\x05VY\xc5\x8d)6\
g\xe3\x96\x11,\xd4J\xbb}\x05\x1b\x0b[\xdb\xcdU\
\x97$\x8aX\x89\xa5\x0f\xa0o\x93\x8c$\xcb\x09\x9al\
\x82\xb0\xd3\x1d\x98\xff\x9b\xcb?\x07\xb4d`I=U\
\x00?L\xbe\xc0\xba%\xe5\xd1w\x17\xd4}L\xc7\xc8\
s\xd3\xb6Nd\x91W\x01\xdc\xe8e\x03\x9cO\x05k\
\x836\x88\x1f=;\xccY_\x89\xff\x00\x8a\xc74H\
v\x00v5^\xe9\xd5!^\x90\x9c\x13\xd0\xb3\xadA\
YYEc\x07\x05D\x10\xcd\x04\xe9[\x0a\xe2\xfa\xb1\
\x03!\xfauq\xa3\x03E-!\xa0W\xe4\xbc\xcf\x10\
\x9b\x04Z_$n\x05\xa8q\x04\xe8\x9d\x08Q\x9b\xb8\
\x13\xe0\x87\xc9\x84\x99L\x00\xabL|e[F\xbc\xc8\
\x9d\x85w\xe0E\xe95qi\xd5\xb6\x1b\xa4c\x80'\
\x80\xb8\x19\x0d\x8f\xdf\xea\x90\x06\xc0\x0b\x93\x0b\x10\x99#\
\xcb8P\xc9^\x98\x1c\x12\xd1\xad`\xba\x94\xd2\xf8h\
u\xc1\x8fb\x87s\x98\xb64\x8cz%7\x9c\xed\x82\
\xb4{F~v:4?\x1b6\xce[%\xb3ka\
\xf3c\xcb\x1e\x04\xebRY\x5c\x8d\xe0\x85q\xf0\xfb\xc2\
\xda\xce\xd9{J\xd7(\xe3;\xdb2\xf6:]\xf8\xef\
'[\xfa7\xfe\x00h\x8f~\x11\x05\x99\x80\x84\x00\x00\
\x00\x00IEND\xaeB`\x82\
\x00\x00\x01\x84\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x01\
>IDAT8O\xa5\x93\xbfJ\x03A\x10\xc6\xbf\
9\x03\xe1\xdcTb\xa5\x8d\x0f \xda\xd9\xf9\x04\xa2\xd8\
hm\x1a\x0da\xaf\x0a\x98R-#\xa4\xba\xdd\x10-\
\xd4Z\x9b\xa0\xe0\x0bX\xdah\xf0\x01l\xb4\x12+\xcf\
#\x10o\xe4\xd6\xbb\xb0w\x188\xb8-\xf6\x0f\xb3\xf3\
\x9bofg\x09%\x07\xe5\xfd\xb9\xd5\x9a\x0fG\xa36\
\x13\xad\x80y\xd5\xd8\x89\x9e\x89y\xe8V\xab\x1d\xeav\
?l\x9f\x0c \xf4\xbc\xf5\x1f\xe6\x01\x01s\xff\x09c\
\xe0s\x86h\xdb\xf5\xfd\x87\xd4>\x01|5\x9b{\xe4\
8\x97E2\xe2(\xaa\xd7z\xbd+#.\x9e\xc2F\
c)\xaaT^\x00\x88\x22\x00\x00\x813\x1e/\xbb\xfd\
\xfe\xab\x01|K\xd9a\xe0\xd0r>N\xf6\xe9:\x00\
\xf0\x04 =\xc7\x91Og\x95j\x1b@\xe0y\xb7`\
\xde\xb4\x01B\xa9\x93@\xca\x0b0\x93\xd0\xba\x1eHy\
d\x03@t'|\x7f\xeb\x0f \xe5\x1b\x80\x85\x9c\xfc\
s\xa1\xd4Ab?\x03\xb0\x9f\xb3\xbf\x0b\xa5\x16\xa7\x03\
\x98\xef\x85\xd6\x1b\x09\xe0\x1a\xc0\xcet@>\x05\xe6G\
\xa1\xf5\x9aI\x01\xa8\x09\xa5v\x03)\xb3\x10;\x85\x02\
E\xbcI\xa2OTd\x8aX\xfa\x19cz\xa9FJ\
\x8bS\xaa\x95SH\xa9\xcfT\xb0\x8d3\xd7~\x010\
\x95\x9f\x11K;\x0a\xaa\x00\x00\x00\x00IEND\xae\
B`\x82\
\x00\x00\x03\x04\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x02\
\xbeIDATXG\xc5\x97Mh\x13a\x10\x86\xdf\
Yl\xb1Z\xff\x10\x14\x8a\x07\xc5RA\xe8\xc5\x83\xa2\
\x1e\xac^\x04\xc1\x8a'\xafU$k1\xbb\xd9U<\
)t\xc1\x8bR1?\x9b\xd6n*\x14\xf4\xe6\xa9\xfe\
@U\x10\xedA\x05\x0fE\x04O\xb6\x17)\x96\x22\xc1\
\xa0\x1e\xa4i2\xb2I\x13\x936\xd9\x9dd\x85\x04r\
\x08\x99\xf7\x9dg\xbfo\xbeof\x09-\xfeP\x8b\xf3\
C\x0c\x10\x8dNl\xc5\xba\xa5>\x22\x1c\x03p\x10\x8c\
\x9d@\xe1\xeb~\x16AX$\xe6i\x06O+\x9c}\
\xaf\xeb\xfaO\xc9\xc3\xf9\x02X\x96\xd5\xbem{\x97\xce\
\xe0\x08\x80]\x12S\x00\xf3\x04\x8a\xffH\x7fKX\x96\
\xb5\xe4\xa5\xf1\x04H$\xc6\xf6\xe7\x89\x1e\x028 L\
\xbc:l\x86\x81\x9b\xa6\xa6N\xd6\xd3\xd7\x05XI\xfe\
\xb9\xc9\xc4U2\x85`\xeaa5V\xcb\xab&\xc0]\
\xdb\xe9U\x80O\xff#y\xd9\x83\xe8\xb4\x11\x0e=[\
\xed\xb9\x06\xe0\x96\xe3lY\x9f\xc5G0v{\x010\
0K\xa0(\x81;\x19|\x1d\xa0\xcd~\xc0y\xce\x1f\
\xba\xa2\x0f~\xa8\x8c[\x03\x10O8\xe3L\xb8\xe8g\
\xc6\xa0S\xa6\x16\x9ar\xe3b\xf6\xd8s\x80N\xfai\
\x00\xccd\xd2\x0b\x87+\x0b\xb3\x0a\xc0\xb6\xc7O\xe4\x90\
\x7f%0B%@<\x99\x9ad\xe63\x12\x1d\x81\xae\
E\xb4\xd0\x9dRl\x15@\xccv\x1e\x03\xe8\x97\x18\x15\
\xb7\x80_\x82\x94\x0d`\x1e\x90hVb\xe6y\xb9\xbd\
\xd74\xcfg\xdc\xdfe\x80\x91\x91\xfb\xdd\xd9|\xeeK\
\x03FM\x872p\xb6t4\xcb\x00\xb1\x84s\x15\x84\
\xf2\xd2\x08\xdc\x9f\x00\xf4\xa2P\x84\x84\x1b`l\x12h\
\x8a!\x84\x98\x11V\xcd\xaa\x15\x88%\x9d\xb7`\x1c\x91\
\x9a0\xf2\xc7Mm\xf0M\xb1\x08S\xaf\x01\xee\x93j\
Axg\x84\xd5\xa3\xd5\x00\xb63\x0b`\xaf\xd4\xc4\xd0\
\xd4\xf2\xea\xc5mg\x88\x01K\xaa\x050ghj\xf7\
j\x80_\x00:\xa5&\x01\x01~\x1b\x9aZ\xd8\xb2\x7f\
5`;-\x07h\xf1\x164X\x84\x81\xb6\xa0f\x11\
6x\x0c\x03\x02\xac=\x86\x8d^DA\x00j^D\
\xc5\xf3,\xbf\x8a\x03\x00\xd4\xbe\x8a]\x80F\x9aQ\xb3\
\x00\x9e\xcd\xc8\x85\x90\xb6\xe3&\x01\xbc\xdb\xb1\x0b \x1d\
H\x14n\xdb\xa1\xeb\x17\xbe\x17\xb6.\x99\x9a\x90tD\
\xd1@\xe2\x1a\xcaF2\xbalh\xa1\xd1d2\xd5\x93\
e~J@\x8f\xe7-*\x1d\xc9J&\xb6=\xbe'\
\xc7\xb9)\x10\xed\xf30\x9e\x03\xb8\x0b\xa0\x0e\xaf\xe4D\
t.\x12\x0e=\xaa\x15\xe39\x96\x0f\x0f?\xd8\xd8\xd6\
\xf1')Y\xde:\x00S\x99\xf4B\xbfeY\xcb\xf5\
\x00}_L\x5ca4qo\x80\x14e\xc8oP\xad\
H\xf2\x15\xe0\xdb\x86vi\xd4\xaf\xb9\x89\x00\x0a\x10\xad\
z5\xf3{\x82\xa0\xff\x8bW h\xa2z\xfa\xbf\xeb\
\xffP04\x82\x9a\xca\x00\x00\x00\x00IEND\xae\
B`\x82\
\x00\x00\x01w\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x01\
1IDAT8O\xa5\x93+H\x04A\x18\xc7\xff\
\xdf\xf8\x80\xc3&\x96\xdd\x0b\x16\x8b\xa0\xd1\xa2{`\x14\
\xb3\x82\xc1;\x0d\xc2eM\x82F\x05\x93\xe6\x03\x83\xde\
\x19\x04\xcdb\x14n\xb5\x18\x15,\x16\xc3\xed\x15\xb1\xc9\
\x81\x8f\xfd\xcb\xce\xb0\xe2\xcd\xb9\xc3\xc1N\x18\x98\xef\xf1\
\xfb\x9e#\xc8y\xc4\xf6\x8fj\xf3c(|n\x09d\
\x8a\xe4t\xa2\x17\x91\x07\x82\x8f\xe8\x0c\x1d\xfa\xd5\x9b\xd7\
\xbf>]\x80\xd6IiN\x14\xcf\x01\x8cf$\xf6\xc6\
XV\x8a\xeb\xcd\xdbT\xff\x0b\x88NK\xab\x10\xd6\xfa\
\xaa\x88R\xf5\xd7\x9ag:\xbb\xe4\x8a\x8eg\xc71\xac\
\xee\x01\x8ct\x01\x84\x0b\xfaM\xb9\xb6\xc0\xef\xf8\x88g\
\xfc\x8d\xbb\x17\x03\xa8\x07{\x006\xed\xe8\x85\xef\xc1b\
\x22\xeb\x0c|\xb5\xfe\xc9\xec\xc8\xaf\x84\xbb\x1a\xd0n\x04\
\x17$\x16m#R\x05\xa6\x89qh\xebDp\xe5\x95\
\xc3e\x03\xa8\x07\xcf\x04\xbc\xde(,\x1b\x994z\x00\
@\xdb\xab\x84\x13N\x00)\xdb&\x03\x1e\xb8\x01\x19%\
\x80x\x82J\x9a\x88Ig\x09YM\x84\xc8\xbe\x99\x02\
w\x9cM\xcc\x1a\xa3(.i\xffX.\x9dc\xd4\xa3\
\xcc\xb3H)=\xd7*\xa7\x90\x5c\x9f\xa9\xaf\x7f`\x19\
\xfd\x00j\xaf\x8b\x11\x01\xa4\x83\xc5\x00\x00\x00\x00IE\
ND\xaeB`\x82\
\x00\x00\x03/\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x02\
\xe9IDATXG\xedV;l\xd3`\x10\xfe\xce\
\xae\x9d\x22u\xa6\x8d\xcb\x08U\xec\xa6 \x18\x81\x89\x89\
N\x0cH\xe5)(\x08$`@\x95\x90\x90X\xa0\x0c\
\xb0\xc0@\x17*!A\x11\xe5Q\x90\x18\x11\x8f\x09\x09\
\xba!\x104\xcd\x1f\x0ab\xa2N\xc3\xc0\x84Pc\xc7\
>d')Q\xe3WRP\x97zK\xee\xee\xbb\xef\
\xff\xef\xfe\xbb\x8f\xb0\xca\x1f\xadr~\xac\x11h\xff\x06\
\x18r\xda\xca\xf6y%,\xaa\xb99\x10\x9cv\xca\xd9\
\x12\x01\xcd\xce\x5c\x02\xa3\x0f \x1d\xc0\x00\x80\x8eZ\xd2\
\x0a\x80\x19\x80\x05\x08s\xa6R\xb8\x9c\x94L\x22\x02\x1b\
\x16\xfb7\xba2\xdf\x05\xf3\x8eD\xc0D\xd3\x92C\xc3\
\xdf;g\xbf\xc6\xf9\xc7\x12\xd0,\xe3\x18\xc0w\xe2\x80\
\x82\xedt\xdcT\xf3\x13Q\xb1\x91\x04\xd2v\xffnb\
\xf7y{\xc9\xabQL\xd2`Q\x99}\x11\x86\x11J\
`\xfd\xaflw\x87\xea,\xac$y=\xb6b\xc9=\
?\xbar\xa5 \xacP\x02ZY\x7f\x04\xc2\xfe\xf6\x08\
\xf0G\x80\xb6,\xc52\xa6\xcc\x948\x90\x98@\xb5\xdb\
i\xb4\x9d\xe4\xcc\xb8\x221\xdfc\x09\xe3\x00\xedZ\xc2\
 \x1e\x0dz\x1d\x817\xa0Y\xfac\x00C-\x13`\
\x5c3S\xe2\xbc\x17\xa7\x95\xf5)\x10\xf65`<1\
U\xd1\xf8\xdb7\x05\x12H[\xfa'\xaa\xbe\xf3\xc4\x1f\
\x01c\xf3\xaa\x18\xf1\x02z-}\x92\x81\xc3\x8d\xc1\x0c\
\xcc\x14U\xb1y9`3\x01\x86\xac\xd9\x992@r\
@\xf6Y\x00\xfd\x01\xff\x8f\x9b\xaa8\xe3\x9f\xdc2&\
\x00\x1en\xf6a\xc7T\x0a\xa9\xe5\x13\xb3\x89@wY\
\xcf\xca\xe4M\xb5\xa6\xef\x8d\xabH\xa7$\xcb}\x05B\
o\x83\xf5\xb6\xa9\x8a\x13\xd5\xe4\xfa-\x00'\xc3\xae\xcd\
a\x0c\x94R\x22\xd7ho\x22\x90.gu\x22'\xbf\
\x0c\xc4e\xe6\xa1b\xaa\xf0T\xb33\xdb\x01z\x09F\
\x17\x03\x93EU\x1c\xa9%\xbf\x09\xe0tT\xcd\x98e\
\xa3\x98\xca\x89H\x02\xf0K\xa0/6\xcc\xf9\xba\xffo\
r14\xdf)\x9e\xf5T\x8cA\xc9\xe5\xa3\xa6*\xfc\
g\xaaY\x991\x80\xce\xc64L\xc5TDgl\x09\
j\xa7y\x0f`k\x00\xe0O\xd7\xe1\xbd\x0b\xeb\x0a\xaf\
\xeb6\xcd\xca\x5c\x07\xe8\x5c\x82n\xfd`\xaab[|\
\x13VO\xf4\x00\xa0\x83\x81\xa0\x0c\x93\xc9\xddST?\
\xbf\xeb\xb5\x8d\xab\xcc|!Aro(?4\xd5\xc2\
\xa1d\x04b\x06\x113\x7f#H\xf7A|1Yr\
\xef\xc1\xb70\x88\xfc2\xd8\xc6\xdb\xc4\xeb7\x8e\x05\xd1\
\xb4\xa9\xe4w\x06\xb9\x85\xee\x02_\x03H\xee\x978\xec\
$v\xc9\x956\x85i\x83\xc8u\xbc2-P\xa7\x16\
\xad\x09b\x05\xc9J4A\x9c\x16\xf0(\xc6\x12\xf0\x9c\
|m\xa087\x12\xafg\xc6T\xc5\x96G\xc24@\
\xf4 \x8a(jmM\x1b\x0c\xe8\x046\xfe\xee\x0bv\
\x18\x94'@\x808\xff\xcfEi\xc8<\x90\xbb-\xdd\
S\xc7(\xa9\xc2S\xc3\xff_\x96'\xe9\xf8V}\x12\
\xf5@\xab\xa0\xad\xf8\xaf\x11\xf8\x03\xd0\x0f\x120\xcaK\
\xa6\x9d\x00\x00\x00\x00IEND\xaeB`\x82\
"

qt_resource_name = b"\
\x00\x07\
\x03\xca\x975\
\x00m\
\x00e\x00s\x00s\x00a\x00g\x00e\
\x00\x05\
\x00o\xa6S\
\x00i\
\x00c\x00o\x00n\x00s\
\x00\x0e\
\x01OA\xe7\
\x00w\
\x00a\x00r\x00n\x00i\x00n\x00g\x00-\x003\x002\x00.\x00p\x00n\x00g\
\x00\x0c\
\x0d#\x84G\
\x00c\
\x00l\x00o\x00s\x00e\x00-\x003\x002\x00.\x00p\x00n\x00g\
\x00\x12\
\x0bO\x81\x07\
\x00i\
\x00n\x00f\x00o\x00r\x00m\x00a\x00t\x00i\x00o\x00n\x00-\x001\x006\x00.\x00p\x00n\
\x00g\
\x00\x13\
\x06\xd6\xa3\xe7\
\x00s\
\x00u\x00c\x00c\x00e\x00s\x00s\x00-\x00f\x00i\x00l\x00l\x00-\x001\x006\x00.\x00p\
\x00n\x00g\
\x00\x0c\
\x0d\xf6{\xe7\
\x00e\
\x00r\x00r\x00o\x00r\x00-\x003\x002\x00.\x00p\x00n\x00g\
\x00\x0c\
\x0d\x0f\x84G\
\x00c\
\x00l\x00o\x00s\x00e\x00-\x001\x006\x00.\x00p\x00n\x00g\
\x00\x0c\
\x0d\xda{\xe7\
\x00e\
\x00r\x00r\x00o\x00r\x00-\x001\x006\x00.\x00p\x00n\x00g\
\x00\x12\
\x0bc\x81\x07\
\x00i\
\x00n\x00f\x00o\x00r\x00m\x00a\x00t\x00i\x00o\x00n\x00-\x003\x002\x00.\x00p\x00n\
\x00g\
\x00\x0e\
\x01cA\xe7\
\x00w\
\x00a\x00r\x00n\x00i\x00n\x00g\x00-\x001\x006\x00.\x00p\x00n\x00g\
\x00\x13\
\x06\xfa\xa3\xe7\
\x00s\
\x00u\x00c\x00c\x00e\x00s\x00s\x00-\x00f\x00i\x00l\x00l\x00-\x003\x002\x00.\x00p\
\x00n\x00g\
"

qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x14\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00$\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x85L\xe3A\x98\
\x00\x00\x01>\x00\x00\x00\x00\x00\x01\x00\x00\x11\x14\
\x00\x00\x01\x85L\xe3QN\
\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x06m\
\x00\x00\x01\x85LT\x8b\xcf\
\x00\x00\x01`\x00\x00\x00\x00\x00\x01\x00\x00\x12\x8f\
\x00\x00\x01\x85L\x83n.\
\x00\x00\x00d\x00\x00\x00\x00\x00\x01\x00\x00\x04\xf7\
\x00\x00\x01\x85L\xef\xac\xb6\
\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x0c\
\x00\x00\x01\x85L\xef\xb6\xa3\
\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xf5\
\x00\x00\x01\x85M\x0b\xf6\xc5\
\x00\x00\x00F\x00\x00\x00\x00\x00\x01\x00\x00\x03V\
\x00\x00\x01\x85M\x0c\x00\xc5\
\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x84\
\x00\x00\x01\x85L\xf1\xef\x11\
\x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd3\
\x00\x00\x01\x85L\xf1\xfa\xaf\
"

def qInitResources():
    QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)

def qCleanupResources():
    QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)

qInitResources()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值