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)的主要内容,如果未能解决你的问题,请参考以下文章

果冻效果下拉刷新控件

Qt编写自定义控件53-自定义宽高下拉框

微信小程序开发-下拉框选项select option写法

MFC中怎样实现组合框显示下拉列表啊?

可空类型的 datagridview 组合框下拉列表中的空值

QCombobox设置下拉框的宽度