|
felix 发表于 2015-10-19 23:34
自己自定个按钮类,想怎么折腾就怎么折腾
下面是我定义的一个类:
自己确实做了一个可以调节参数的按钮,能够实现按下和弹起切换图片。感觉有成熟的控件还是希望能够有限使用,毕竟方便嘛。如果没有别的办法也只能这样了
class Button_Control : public QWidget
{
Q_OBJECT
public:
typedef enum {ButtonRelease , ButtonPressed , ButtonFocus}BUTTON_STATE_E;
typedef enum {ButtonInactive , ButtonActive}BUTTON_ACTIVESTATE_E;
typedef enum {ButtonStyle_Default,ButtonStyle_IERatio,ButtonStyle_FGFlow,ButtonStyle_Mode}BUTTON_STYLE_E;
explicit Button_Control(QWidget *parent=0);
Button_Control(QWidget *parent,QString Name,
BUTTON_STATE_E State = ButtonRelease,
BUTTON_ACTIVESTATE_E ActiveState = ButtonInactive,
BUTTON_STYLE_E Style = ButtonStyle_Default);
Button_Control(QWidget *parent,QString Name,QString Unit,
qint32 Value,
qint16 Step,
qint8 Float,
qint32 Max,
qint32 Min,
BUTTON_STATE_E State = ButtonRelease,
BUTTON_ACTIVESTATE_E ActiveState = ButtonInactive,
BUTTON_STYLE_E Style = ButtonStyle_Default);
~Button_Control();
//state
void ButtonSet_Release(void);
void ButtonSet_Pressed(void);
BUTTON_STATE_E ButtonSet_StateReverse(void);//reverse state
BUTTON_STATE_E ButtonGet_State(void);
//display
void ButtonSet_ParaName(QString ParaName);
QString * ButtonGet_ParaName(void);
void ButtonSet_ParaUnit(QString ParaUnit);
QString * ButtonGet_ParaUnit(void);
void ButtonSet_ParaValue(qint32 ParaValue);
qint32 ButtonGet_ParaValue(void);
qint32 ButtonAdd_ParaValue(void);
qint32 ButtonSub_ParaValue(void);
void ButtonSet_FloatNum(qint8 FloatNum);
qint8 ButtonGet_FloatNum(void);
//contron
void ButtonSet_StepNum(qint32 StepNum);
qint32 ButtonGet_StepNum(void);
//limit
void ButtonSet_MaxMinValue(qint32 Max,qint32 Min);
qint32 ButtonGet_MaxValue(void);
qint32 ButtonGet_MinValue(void);
//process
QString * _IntToFloat(qint32 num,qint8 FloatNum); //maybe error: new String not delete
signals:
void ButtonPress_Event(Button_Control *src);//end self press signal
protected:
void paintEvent(QPaintEvent * event);
void keyPressEvent(QKeyEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
private:
Ui::Button_Control *ui;
const qint8 ItemID = 1;// button ItemID = 8
//state
BUTTON_STATE_E Button_State;
BUTTON_ACTIVESTATE_E Button_ActiveState;
BUTTON_STYLE_E Button_Style;
//display
QString Button_ParaName;
QString Button_ParaUnit;
qint32 Button_ParaValue;
qint8 Button_FloatNum;
//QFont Button_NameFont
// Button_ValueFont
// Button_ColorTable[6] //NameFontColor_Active
//ValueFontColor_Active
//NameFontColor_Inactive
//ValueFontColor_Inactive
//NameFontColor_Focus
//ValueFontColor_Focus
QString Button_ImageName[3]; //BUTTON_STATE_E 3 state
//control
qint16 Button_StepNum;
//limit
qint32 Button_MaxValue;
qint32 Button_MinValue;
};
|
|