核心思想是使用弹出式QWidget(设置Qt::Popup标志)作为下拉界面,使用QToolButton作为下拉选项,显示文字和图标,当选中一项后,通过修改style sheet,改变下拉框的背景,实现下拉框的颜色和当前选中项的颜色一致
效果如下:
//myComBobox.h
#ifndef MYCOMBOBOX_H
#define MYCOMBOBOX_H
#include <QObject>
#include <QWidget>
#include <QIcon>
#include <QToolButton>
#include <QHBoxLayout>
#include <QButtonGroup>
class MyCombobox : public QToolButton
{
Q_OBJECT
struct Item{
QString text;
QIcon icon;
bool enable;
QToolButton* button;
QColor color;
};
public:
explicit MyCombobox(QWidget *parent = nullptr);
void addItem(const QString &text, const QIcon& icon);
void setCurrentIndex(int index);
int currentIndex() const{return selected;};
void setEnabled(int idx, bool val);
signals:
void curre