#ifndef LHCOLORDIALOG_H #define LHCOLORDIALOG_H #include #include #include #include "DropShadow/idropshadowable.h" enum Skin { emBRIGHT = 0, emDARK = 1, emOTHER = 2 }; class LHColorDialog : public QDialog, public IDropShadowable { Q_OBJECT public: explicit LHColorDialog(Skin sk, const QString& qss, QWidget* parent = nullptr); explicit LHColorDialog(Skin sk, const QString& qss, const QColor& initial, QWidget* parent = nullptr); virtual ~LHColorDialog(); void setStandardColor(int idx, const QColor& clr); void setCustomColor(int idx, const QColor& clr); QColor selectedColor() const {return m_selColor;} protected: void mousePressEvent(QMouseEvent*) override; void mouseReleaseEvent(QMouseEvent*) override; void mouseMoveEvent(QMouseEvent* ) override; signals: void sigColorSelected(const QColor& clr); void sigCurrentColorChanged(const QColor& clr); private slots: void createColorDialog(Skin sk, const QColor& initial = QColor()); private: void setButtonName(); // 设置确认,取消按钮名称 void customDialog(); // 自定义设置 private: const int SHADOW_RADIUS = 20; QColorDialog* m_pColorDlg{nullptr}; QHBoxLayout* m_pLayout{nullptr}; bool m_bMousePress{false}; QPoint m_prePos; QColor m_selColor; QString m_skinQss; }; #endif // LHCOLORDIALOG_H