qt 将最大高度设置为下拉组合框(样式 cleanlooks)
Posted
技术标签:
【中文标题】qt 将最大高度设置为下拉组合框(样式 cleanlooks)【英文标题】:qt set max height to a dropdown combobox (style cleanlooks) 【发布时间】:2017-01-11 11:11:01 【问题描述】:我正在开发一个包含组合框的软件,里面有很多项目,问题是当我点击它时,列表太大,我无法通过滚动查看所有项目。
使用了 cleanlooks 样式(这就是组合框尺寸过大的原因)但我无法更改它,所以我正在寻找设置最大尺寸的解决方案。
我在网上和文档中都没有找到任何关于此的内容。
我尝试使用尺寸策略但不起作用。我还尝试获取组合框使用的 QLineEdit,并在其上设置 QSize,最后通过在组合框和 QLineEdit 上设置样式表,但没有任何工作正常。
我对 QSize 和样式表的尝试:
sz = QSize(20, 20)
combo.view().setGridSize(sz)
combo.view().setStyleSheet("""QListView max-height: 50px; background-color: yellow; """)
combo.setStyleSheet("""QComboBox max-height: 30px; background-color: pink; """)
编辑:在@Vladimir Bershov 发表评论后,我尝试使用以下命令正确设置大小:setMaxVisibleItems() 但如文档中所述(“注意:对于 QStyle 返回 true 的样式中的不可编辑组合框,此属性将被忽略::SH_ComboBox_Popup") 属性被忽略。
所以我寻找修改 QStyle Hint 以取消设置 SH_ComboBox_Popup 但正如 post 中所解释的那样,这是不可能的。
如果您有任何建议,我正在倾听。
谢谢。
【问题讨论】:
看来你需要setMaxCount()
或setMaxVisibleItems()
我试过这个,但它被忽略了,我在文档中看到了这个:“注意:对于为 QStyle::SH_ComboBox_Popup 返回 true 的样式(例如 Mac 样式)中的不可编辑组合框,此属性将被忽略或 Gtk+ 风格。”这可以解释为什么。我之前尝试将组合框设置为可编辑,它可以工作,所以我正在寻找这种方式
@pipou。 QProxyStyle
类现在在 PyQt5 中可用。我尝试使用 Cleanlooks 样式,并覆盖 SH_ComboBox_Popup
作品的样式提示。在 PyQt4 中没有办法解决这个问题。
@ekhumoro 感谢您提供的信息,即使没有几乎解释清楚的解决方案,我也会将其标记为已解决。
【参考方案1】:
就像 cmets 中解释的那样,PyQt4 中没有可用的解决方案
【讨论】:
【参考方案2】:当我试图最小化 Qt/C++ 中 QComboBox 下拉菜单的高度时,这条线对我有用。
ComboBox->setStyleSheet("combobox-popup: 0;");
【讨论】:
请标记您的代码并提供更多详细信息以获取更多信息。以上是关于qt 将最大高度设置为下拉组合框(样式 cleanlooks)的主要内容,如果未能解决你的问题,请参考以下文章