QT开发技巧之QComboBox通过qss设置item高度,增加间隔

1.问题描述

QComboBox默认的下拉item间距太小,字挤在一起不好看,直接qss设置item高度但是没效果

2.解决后效果

可通过qss设置item的最小高度,增加间距,不同字体大小的combobox都能使用,简单方便

3.代码实现

 (1)新建一个类继承自QComboBox,比如我这里是MyQComboBox 

 .h文件如下

#ifndef MYQCOMBOBOX_H
#define MYQCOMBOBOX_H

#include <QComboBox>

class MyQComboBox : public QComboBox
{
    Q_OBJECT
public:
    MyQComboBox(QWidget *parent = nullptr);
    void setFont(const QFont &font);

protected:

};

#endif // MYQCOMBOBOX_H

.c文件如下

#include "myqcombobox.h"
#include <QComboBox>
#include <QListView>
#include <QtDebug>


MyQComboBox::MyQComboBox(QWidget *parent):QComboBox(parent)
{

}

void MyQComboBox::setFont(const QFont &font)
{
    //添加listView才能通过qss设置item高度
    QListView* listView = new QListView(this);
    listView->setFont(font);
    this->setView(listView);

    QComboBox::setFont(font);
}

(2)设计窗口点combobox 右键,提升为新建的MyQComboBox,并且设置一下字体和大小

 (3)添加qss,就可以指定item的最小高度了


/* combobox 下拉item最小高度 */
QComboBox QAbstractItemView::item { 
min-height: 40px;
}

4.原理

QComboBox 想实现修改item的高度需要设置视图比如QListView,这里通过继承类来实现修改setFont函数,添加QListView到QComboBox ,从而节省的人工代码为每一个ComboBox 添加QListView麻烦,因为ui在初始化时会自动调用setFont,而我们只需要在提升一下控件就可以了

5.工程下载

点击下载

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哀歌与世无争

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值