zhiyiYo / PyQt-Fluent-Widgets

A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again.
https://qfluentwidgets.com
GNU General Public License v3.0
5.61k stars 541 forks source link

Windows下CardWidget组件点击效果无法还原 #441

Closed TigGrak closed 1 year ago

TigGrak commented 1 year ago

使用pyqt5

class Ui_ConnectInterface(object):
    def setupUi(self, ConnectInterface):
         ConnectInterface.setObjectName("ConnectInterface")
        ConnectInterface.resize(900, 800)
        self.gridLayoutWidget = QtWidgets.QWidget(ConnectInterface)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(20, 250, 869, 251))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.InfoCard1 = CardWidget(self.gridLayoutWidget)
        self.InfoCard1.setObjectName("InfoCard1")
        ...

部分ui代码 其他环境与example中clock项目一样 该代码中InfoCard1组件点击后触发点击效果,但是无法还原,clock实例中却没有这个问题

zhiyiYo commented 1 year ago

无法复现,最小复现代码不是这样贴的

TigGrak commented 1 year ago

无法复现,最小复现代码不是这样贴的

# -*- coding: utf-8 -*-
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.

from PyQt5 import QtCore
from qfluentwidgets import BodyLabel, CardWidget,SplitFluentWindow,setTheme,Theme
import sys
from PyQt5.QtWidgets import QApplication

class Ui_testF(object):
    def setupUi(self, testF):
        testF.setObjectName("testF")
        testF.resize(400, 300)
        self.CardWidget = CardWidget(testF)
        self.CardWidget.setGeometry(QtCore.QRect(60, 60, 241, 171))
        self.CardWidget.setObjectName("CardWidget")
        self.InfoTitle2 = BodyLabel(self.CardWidget)
        self.InfoTitle2.setGeometry(QtCore.QRect(60, 20, 91, 31))
        self.InfoTitle2.setObjectName("InfoTitle2")
        self.InfoText1_2 = BodyLabel(self.CardWidget)
        self.InfoText1_2.setGeometry(QtCore.QRect(20, 60, 201, 71))
        self.InfoText1_2.setObjectName("InfoText1_2")

        self.retranslateUi(testF)
        QtCore.QMetaObject.connectSlotsByName(testF)

    def retranslateUi(self, testF):
        _translate = QtCore.QCoreApplication.translate
        testF.setWindowTitle(_translate("testF", "Form"))
        self.InfoTitle2.setText(_translate("testF", "<html><head/><body><p><span style=\" font-size:16pt;\">你好</span></p></body></html>"))
        self.InfoText1_2.setText(_translate("testF", "<html><head/><body><p style=\"line-height: 0.5\"><span style=\" color:#747474;\">1234</span></p><p style=\"line-height: 0.5\"><span style=\" color:#747474;\">test</span></p><p style=\"line-height: 0.5\"><span style=\" color:#747474;\">4545454545</span></p></body></html>"))

class TEST( Ui_testF,SplitFluentWindow):
    def __init__(self,parent=None):
        super().__init__(parent=parent)
        self.setupUi(self)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    setTheme(Theme.DARK)
    demo = TEST()
    demo.show()
    app.exec_()

似乎去浅色深色无关,设置深色只是为了看的更明显 删掉了一些没用的

zhiyiYo commented 1 year ago

点击 Label 的区域就会触发这个问题,看起来像是没有接收到 MouseReleaseEvent,奇怪的是点击 clock 里面的 label 就可以

zhiyiYo commented 1 year ago

应该是html导致的,换成 plainText 就可以

zhiyiYo commented 1 year ago

要设置样式的话还是靠样式表吧