Qt学习笔记外观篇(五):子类化窗口部件类

本文探讨了Qt中自定义外观的一种方法——子类化窗口部件类。通过子类化,可以为经常使用的组件赋予独特功能和外观。主要涉及重新实现事件处理函数以创建特定行为,例如示例中的自定义圆形按钮。
摘要由CSDN通过智能技术生成

 如前所述,自定义外观的第三种方法是子类化窗口部件类。子类化窗口类适用于能够经常使用的,具有鲜明特性的部件。子类化窗口类更多的适用于定制功能而非外观。

 子类化窗口部件类的过程就是重新实现事件处理函数的过程。

 下面是自定义圆形按钮类:

 

 class RoundButton : public QPushButton
 {
    Q_OBJECT

 public:
    RoundButton(QWidget * parent = 0);
    RoundButton(const QString & text, QWidget * parent = 0);
    RoundButton(const QIcon & icon,const QString & text ,QWidget * parent = 0);

    virtual ~RoundButton();
	QSize sizeHint();
	QSize minimumSize();
    void setColor(QColor color)         { m_color = color; }
    void setHighlight(QColor highlight) { m_highlight = highlight; }
    void setShadow(QColor shadow)       { m_shadow = shadow; }

    //Range: 0.0 [invisible] - 1.0 [opaque]
    void setOpacity(qreal opacity)        { m_opacity = opacity; }

    //Range: 0 [rectangle] - 99 [oval]
    void setRoundness(int roundness)      { m_roundness = roundness; }

 protected:
    void paintEvent(QPaintEvent * pe);
     //void drawButton(QPainter* pe);
    void enterEvent(QEvent * e);
    void leaveEvent(QEvent * e);

    void mousePressEvent(QMouseEvent * e);
    void mouseReleaseEvent(QMouseEvent * e);

 private:
    QRect calculateIconPosition(QRect button_rect, QSize icon_size);
	void adjustGeometry();

 private:
    bool m_hovered;
    bool m_pressed;
    QColor m_color;
    QColor m_highlight
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值