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.工程下载
点击下载