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

为listwidget添加scrollbar后,水平滚动条不显示 #167

Closed Cheukfung closed 1 year ago

Cheukfung commented 1 year ago

复现代码:

import sys
import random
from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem
from qfluentwidgets import SmoothScrollDelegate

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.list_widget = QListWidget(self)
        self.list_widget.resize(400,400)
        self.list_widget.installEventFilter(SmoothScrollDelegate(self.list_widget))

        for i in range(100):
            item = QListWidgetItem(f'Item {i}: '+'content'*100)
            self.list_widget.addItem(item)

        self.resize(400, 400)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

image

zhiyiYo commented 1 year ago

有点奇怪,QListWidget 只要隐藏了水平滚动条就会调整视口水平方向的宽度

Cheukfung commented 1 year ago

如果用qss隐藏默认滚动条就能正常显示自定义的scrollbar

self.list_widget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.list_widget.horizontalScrollBar().setStyleSheet("""
                    QScrollBar:horizontal { height: 0px; }
                """)
zhiyiYo commented 1 year ago

解决了就好