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

ComboBox在Item较多时,下拉列表显示长度过长 #179

Closed TwooSix closed 1 year ago

TwooSix commented 1 year ago

Describe the bug ComboBox在 Item 较多时,下拉列表显示长度过长,或许可以适当缩短一点,而且本身也自带滚动浏览效果,再加个滚动条提示用户下面还有内容应该效果更好。此外,我看了下win11本身的下拉框,似乎win11的下拉列表在长度超出屏幕底部时,也并不会自动上移下拉列表(最近想把EditableComboBox做成可键入搜索Item,这样长度太长自动上移会阻挡原控件没办法实时预览效果)

Environment

Code

  from PyQt5.QtCore import Qt
  from PyQt5.QtWidgets import QApplication, QHBoxLayout, QWidget
  from qfluentwidgets import ComboBox

  QApplication.setHighDpiScaleFactorRoundingPolicy(
      Qt.HighDpiScaleFactorRoundingPolicy.PassThrough
  )
  QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
  QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)

  properties = [str(i) for i in range(50)]
  app = QApplication([])
  viewer = QWidget()
  layout = QHBoxLayout()
  combobox = ComboBox()
  combobox.addItems(properties)
  layout.addWidget(combobox)
  viewer.setLayout(layout)
  viewer.show()
  app.exec_()

Screenshots 过长自动上移导致位置偏离: 1

Win11 的下拉框效果: image

zhiyiYo commented 1 year ago

之前还没写滚动条,所以滚动条被隐藏了,现在可以加回去了

Delay-n-days commented 1 year ago

同,感觉宽度也可以做个省略,超过combox长度可以加个 ...

zhiyiYo commented 1 year ago

最新版本已经解决了这个问题