首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QComboBox setMaxVisible()不适用于融合样式

QComboBox setMaxVisible()不适用于融合样式
EN

Stack Overflow用户
提问于 2019-06-20 15:42:54
回答 1查看 601关注 0票数 1

我一直在自学如何使用pythonPyQt5来创建UI。Fusion样式看起来非常不错,但我注意到当我将该样式应用于应用程序时,QComboBox命令setMaxVisibleItems不再起作用。相反,融合样式QComboBox将同时显示所有项(或屏幕大小允许的尽可能多的项),即使应用setMaxVisibleItems时也是如此。

我想可能是我使用了错误的命令,所以我删除了融合样式,并尝试用多个不同的值设置最大可见项。每个都工作得很好,所以我确信这一定是融合风格本身。是否有任何方法来改变融合方式或强制它应用setMaxVisibleItems?我在下面为它提供了一些示例代码。

代码语言:javascript
复制
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个项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-20 15:54:52

property并不是所有样式都尊重的。

注意:对于样式中不可编辑的组合框,此属性将被忽略,这些样式返回QStyle::SH_ComboBox_Popup样式(如Mac样式或Gtk+样式)的true。

注意,如果您的组合框是可编辑的,它可能会像预期的那样工作。样式的行为方式是能够始终如一地匹配他们试图模仿的本地行为。我不知道融合不遵守maxVisibleItems的原因。

您可以始终创建自己的样式--基于融合--以更改特定行为。通常,建议您尊重用户对本机样式(或他们配置的样式)的期望,而不是手动设置样式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56689570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档