#pragma once #include #include #include "iProperty_global.h" class QComboBox; class QPaintEvent; class QMouseEvent; class QResizeEvent; class QEvent; // 字体编辑组件 class I_PROPERTY_EXPORT ZxFontEdit : public QWidget { Q_OBJECT public: // 枚举变量,标识字体各部分 enum FontSubPart { FSP_Family = 0, FSP_Size, FSP_Bold, FSP_Italic, FSP_Unknown }; explicit ZxFontEdit(QWidget* parent = 0); void setFont(const QFont& font); QFont getFont(); signals: void sigFontFamilyChanged(QString); void sigFontSizeChanged(QString); void sigFontBoldChanged(bool); void sigFontItalicChanged(bool); protected slots: void onFamilyChanged(const QString& s); void onSizeChanged(const QString& s); protected: virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void resizeEvent(QResizeEvent *); virtual void leaveEvent(QEvent *); protected: void showFamilyWx(); void hideFamilyWx(); void showSizeWx(); void hideSizeWx(); QRect getSubBounds(FontSubPart part) const; int getSubFSPIndex(const QPoint& pt); protected: QFont m_font; // 各部分X起始位置以及宽度 int m_arrFspXs[FSP_Unknown]; int m_arrFspWidths[FSP_Unknown]; QComboBox* m_pCbxFontFamily; QComboBox* m_pCbxFontSize; FontSubPart m_oCurFsp; };