gpt4 book ai didi

python - QComboBox setMaxVisible() 不适用于融合风格

转载 作者:行者123 更新时间:2023-12-01 07:41:24 25 4
gpt4 key购买 nike

我一直在自学如何使用pythonPyQt5来制作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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com