DtkWidget 5.6.0.2
DTK Widget module
darrowbutton.h
1// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DARROWBUTTON_H
6#define DARROWBUTTON_H
7
8#include <QWidget>
9#include <QLabel>
10#include <QStyle>
11#include <QStateMachine>
12#include <QState>
13#include <QDebug>
14
15#include <dtkwidget_global.h>
16#include <dconstants.h>
17
18DWIDGET_BEGIN_NAMESPACE
19
20class ArrowButtonIcon : public QLabel
21{
22 Q_OBJECT
23 Q_PROPERTY(int arrowButtonDirection READ arrowDirection)
24 Q_PROPERTY(int arrowButtonState READ buttonState)
25public:
26 explicit ArrowButtonIcon(QWidget *parent = 0);
27 void setArrowDirection(int direction);
28 void setButtonState(int state);
29 int arrowDirection() const;
30 int buttonState() const;
31
32private:
33 int m_direction;
34 int m_buttonState;
35};
36
37class LIBDTKWIDGETSHARED_EXPORT DArrowButton : public QLabel
38{
39 Q_OBJECT
40public:
41 enum ArrowDirection {
42 ArrowUp,
43 ArrowDown,
44 ArrowLeft,
45 ArrowRight
46 };
47
48 enum ArrowButtonState {
49 ArrowStateNormal,
50 ArrowStateHover,
51 ArrowStatePress
52 };
53
54 explicit DArrowButton(QWidget *parent = 0);
55 void setArrowDirection(ArrowDirection direction);
56 int arrowDirection() const;
57 int buttonState() const;
58
59protected:
60 void mousePressEvent(QMouseEvent *event);
61 void mouseReleaseEvent(QMouseEvent *event);
62 void enterEvent(QEvent *);
63 void leaveEvent(QEvent *);
64
65Q_SIGNALS:
66 void mousePress();
67 void mouseRelease();
68 void mouseEnter();
69 void mouseLeave();
70
71private:
72 void initButtonState();
73 void setButtonState(ArrowButtonState state);
74 void updateIconDirection(ArrowDirection direction);
75 void updateIconState(ArrowButtonState state);
76
77private:
78 ArrowButtonIcon *m_normalLabel = NULL;
79 ArrowButtonIcon *m_hoverLabel = NULL;
80 ArrowButtonIcon *m_pressLabel = NULL;
81
82 ArrowDirection m_arrowDirection = ArrowDown;
83 ArrowButtonState m_buttonState = ArrowStateNormal;
84};
85
86DWIDGET_END_NAMESPACE
87
88#endif // DARROWBUTTON_H
Definition: darrowbutton.h:21
可以使用 DArrowButton 类快速创建箭头形状的按钮.
Definition: darrowbutton.h:38