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

1.问题描述

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

QT开发技巧之QComboBox通过qss设置item高度,增加间隔_第1张图片

2.解决后效果

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

QT开发技巧之QComboBox通过qss设置item高度,增加间隔_第2张图片

3.代码实现

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

 .h文件如下

#ifndef MYQCOMBOBOX_H
#define MYQCOMBOBOX_H

#include 

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 
#include 
#include 


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,并且设置一下字体和大小

QT开发技巧之QComboBox通过qss设置item高度,增加间隔_第3张图片

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


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

4.原理

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

5.工程下载

点击下载

你可能感兴趣的:(qt开发,qt,开发语言,c++)