尝试更改单击时更改图标时 qml 按钮图标消失

问题描述

我正在制作一个无框架的 qml 应用。

对于最大化按钮,我想根据窗口状态在 2 个图标之间插入。 图标被命名为 max_1.pngmax_2.png。但是当我点击更改图标时,图标会变成透明(但按钮仍然存在,我可以点击它)。

当我单击最大化按钮时,我也在控制台中收到此消息:-

qt.network.ssl: QSslSocket: cannot resolve EVP_PKEY_param_check
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_ciphersuites
qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot resolve SSL_SESSION_is_resumable
qt.network.ssl: QSslSocket: OpenSSL >= 1.1.1 is required; OpenSSL 1.1.0g  2 Nov 2017 was found instead

file:///C:/Program Files (x86)/python38-32/lib/site-packages/pyside2/qml/QtQuick/Controls.2/RoundButton.qml: QML IconImage: Protocol "" is unkNown

我没有使用任何网络,所以不确定为什么这些 ssl 消息在那里。但那 QML IconImage: Protocol "" is unkNown 是什么意思?

最初的普通图标:-

Normal maximize icon

点击最大化时:-

When clicked on maximize

再次单击使窗口恢复正常大小:-

enter image description here

这是最大化按钮的qml代码:-

        // MAXIMIZE BUTTON

        RoundButton {
            id: maxBtn
            x: 445
            width: 25
            height: 20
            opacity: 1
            anchors.right: parent.right
            anchors.top: parent.top
            smooth: false
            antialiasing: false
            leftPadding: 3
            topPadding: 3
            bottomPadding: 3
            rightPadding: 3
            padding: 0
            anchors.rightMargin: 36
            display: AbstractButton.IconOnly
            anchors.topMargin: 7
            icon.source: "images/max_1.png"
            icon.color: 'transparent'
            background: Rectangle {
                color: "transparent"
                radius: 5
            }

            onHoveredChanged: {
                maxBtn.hovered === true ? background.color='#0DCFEC' : background.color='transparent'
            }

            onpressedChanged: {
                maxBtn.pressed === true ? background.color='#0F82B2' : background.color='transparent'
            }
            onClicked: if (mainWindow.isMaximized === 1){
                           mainContainer.radius = 10
                           icon.source = 'images/max_1.png'
                           mainWindow.shownormal()
                           mainWindow.isMaximized = 0
                       }
                       else {
                           mainContainer.radius = 0
                           icon.source = 'images/max_2.png'
                           mainWindow.showMaximized()
                           mainWindow.isMaximized = 1
                       }
        }

注意:isMaximized一个自定义实现的变量,用于跟踪窗口大小。

完整源代码:- Click Here to Download (25kb)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)