QCombobox设置下拉框的宽度(设置QComboBox的下拉框Item高度|下拉框下拉列表的高度)

这几天写一个项目,里面用到qcombobox组件,其中下拉框含有129个子项,所以在点击的时候,一个下拉框就将整个电脑屏幕给占满了,很不好看并且在使用中会造成很大的苦恼。其实我就是想设置一个下拉框最大的高度,而且,剩下还未显示的子项就用滚动条来代替。

网上搜了很长时间,很多都是人云亦云,不能解决问题,所以,今天写下这个博客,一来,留给自己存档,而来,留给后来的同学,希望不要走我这条老路。

下拉框高度主要分两种。

一、下拉框子项的高度:

  1. setStyleSheet("QComboBox { min-height: 40px; min-width: 60px; }"  
  2.         "QComboBox QAbstractItemView::item { min-height: 40px; min-width: 60px; }");  
  3. QComboBox *combo = new QComboBox(this);  
  4. combo->setView(new QListView());  
二、下拉框下拉列表的高度:

我们一般会用这条语句

ui->m_qcombxType->setMaxVisibleItems(10);
设置它下拉显示最多的子项,也就是下拉框的高度。但是在用的时候发现没反应,使用不了。在这条语句前面再加上一句
 ui->m_qcombxType->setEditable(true);
设置qcombobox为为可编辑属性。就可以了。其中 m_qcombxType为下拉框的名字。

=================================================================

参考资料

[1]设置 QComboBox的下拉框Item高度

http://blog.youkuaiyun.com/abeldeng/article/details/24769157

[2]Qt - 自定义QComboBox下拉框的item高度

http://blog.youkuaiyun.com/lys211/article/details/43956979

[3]QComboBox列表项高度设置

http://blog.youkuaiyun.com/xiaogangwang2012/article/details/51192419

### 设置 Qt 中 QComboBox 下拉列表属性 对于希望修改 `QComboBox` 的下拉列表最大可见项数以及调整其宽度的需求,可以通过设置样式表或者编程方式来实现。 #### 使用样式表设置最大可见项数 通过定义特定的样式规则可以控制组件的行为,在这里为了改变组合框内显示项目的数量,可利用 `maxVisibleItems` 属性: ```css QComboBox { maxVisibleItems: 10; /* 设定最多能看到10个项目 */ } ``` 此方法允许开发者轻松指定当用户点击展开按钮时能够看到多少条目而无需滚动[^1]。 #### 编程设定下拉框宽度 如果目标是动态调整弹出窗口(即实际容纳选项的部分)的尺寸,则应该考虑使用 C++ 或 Python (PyQt/Pyside) 来操作 widget 的几何特性。下面是一个简单的例子展示怎样使下拉部分适应最长一项的内容长度: ```cpp // 假设 ui->comboBox 是已经创建好的 QComboBox 实例 ui->comboBox->setMinimumContentsLength(20); // 这里的参数代表字符单位的大致估计值 ``` 另外一种更灵活的方法是在每次更新内容之后重新计算并应用新的大小给 view 部分: ```cpp void adjustComboBoxWidth(QComboBox *comboBox){ QFontMetrics fm(comboBox->font()); int maxWidth = qMax(fm.horizontalAdvance("最宽的一项"), comboBox->minimumSizeHint().width()) + 30; comboBox->view()->setFixedWidth(maxWidth); } // 调用函数以即时生效 adjustComboBoxWidth(ui->comboBox); ``` 上述代码片段展示了如何基于字体度量信息自动确定合适的宽度,并加上一些额外的空间作为边距处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值