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.49k stars 523 forks source link

FlowLayout中的控件在ExpandSettingCard中无法全部显示问题 #876

Open gcc2001 opened 4 months ago

gcc2001 commented 4 months ago

What happened?

在ExpandSettingCard的viewLayout中利用FlowLayout布置控件,会出现无法正常显示所有控件

Operation System

Windows 11 23H2

Python Version

3.10.11 64-bit

PyQt/PySide Version

5.15.10

PyQt/PySide-Fluent-Widgets Version

1.5.5

How to Reproduce?

如果尝试在ExpandSettingCard的viewLayout中添加FlowLayout,在某些情况下ExpandSettingCard会无法显示所有控件 picture

Minimum code

from PyQt5.QtWidgets import QApplication, QVBoxLayout
from qfluentwidgets import *
from qframelesswindow import *
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class CustomSettingCard(ExpandSettingCard):
    def __init__(self, icon, parent=None):
        super().__init__(icon, "标题", "子标题", parent)
        layout = FlowLayout()
        for i in range(15):
            chk = CheckBox()
            chk.setText(f"chk{i}")
            layout.addWidget(chk)

        self.viewLayout.addLayout(layout)
        self.viewLayout.setContentsMargins(8, 18, 24, 18)
        self._adjustViewSize()

class MainWindow(FramelessWindow):
    def __init__(self):
        super().__init__()
        self.setTitleBar(StandardTitleBar(self))
        self.titleBar.setAttribute(Qt.WA_StyledBackground)
        self.setWindowTitle("MainWindow")
        self.setGeometry(800, 300, 400, 400)
        layout = QVBoxLayout(self)
        card = CustomSettingCard(FluentIcon.HOME, self)
        layout.addWidget(card)

app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec()