You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.5 KiB
C++
83 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <QFont>
|
|
#include <QWidget>
|
|
#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;
|
|
};
|
|
|
|
|
|
|
|
|