- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在自学如何使用python
和PyQt5
来制作UI。 Fusion
样式看起来非常不错,但我注意到当我将该样式应用于应用程序时,QComboBox
命令 setMaxVisibleItems
不再起作用。相反,即使应用了 setMaxVisibleItems
,融合样式 QComboBox
也会一次显示所有项目(或屏幕尺寸允许的尽可能多的项目)。
我想也许我使用了错误的命令,所以我删除了融合样式并尝试使用多个不同的值设置最大可见项目。每个都工作得很好,所以我确信它一定是融合风格本身。有什么方法可以改变融合样式的工作方式或强制其应用setMaxVisibleItems
?我在下面提供了一些示例代码。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QComboBox, QPushButton
class Example(QMainWindow):
def __init__(self):
super().__init__()
combo = QComboBox(self)
counter = 1
while (counter < 21):
combo.addItem(str(counter))
counter = counter + 1
combo.setMaxVisibleItems(5)
combo.move(50, 50)
self.qlabel = QLabel(self)
self.qlabel.move(50,16)
combo.activated[str].connect(self.onChanged)
self.setGeometry(50,50,320,200)
self.setWindowTitle("QLineEdit Example")
self.show()
def onChanged(self, text):
self.qlabel.setText(text)
self.qlabel.adjustSize()
if __name__ == '__main__':
app = QApplication(sys.argv)
#app.setStyle("fusion")
ex = Example()
sys.exit(app.exec_())
应用fusion
样式意味着应用程序会同时显示所有 20 个项目。注释掉融合样式意味着应用程序一次显示 5 个项目。
最佳答案
maxVisibleItems
property并非所有风格都尊重。
Note: This property is ignored for non-editable comboboxes in styles that returns true for QStyle::SH_ComboBox_Popup such as the Mac style or the Gtk+ Style.
请注意,如果您的组合框是可编辑的,它可能会按预期工作。样式的行为方式是为了能够一致地匹配它们试图模仿的 native 行为。我不知道 Fusion 不遵守 maxVisibleItems
的原因。
您始终可以基于 Fusion 创建自己的样式来更改特定行为。一般来说,建议尊重用户对 native 样式(或他们配置的样式)的期望,而不是手动设置样式。
关于python - QComboBox setMaxVisible() 不适用于融合风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689570/
我一直在自学如何使用python和PyQt5来制作UI。 Fusion 样式看起来非常不错,但我注意到当我将该样式应用于应用程序时,QComboBox 命令 setMaxVisibleItems 不再
我是一名优秀的程序员,十分优秀!