DtkWidget 5.6.0.2
DTK Widget module
dbuttonbox.h
1// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DBUTTONBOX_H
6#define DBUTTONBOX_H
7
8#include <dtkwidget_global.h>
9#include <DObject>
10#include <DStyle>
11#include <DDciIcon>
12
13#include <QAbstractButton>
14
15DWIDGET_BEGIN_NAMESPACE
16
17class DStyleOptionButtonBoxButton;
18class DButtonBoxButtonPrivate;
19class DButtonBoxButton : public QAbstractButton, public DCORE_NAMESPACE::DObject
20{
21 Q_OBJECT
22 D_DECLARE_PRIVATE(DButtonBoxButton)
23
24public:
25 explicit DButtonBoxButton(const QString &text, QWidget *parent = nullptr);
26 DButtonBoxButton(const QIcon& icon, const QString &text = QString(), QWidget *parent = nullptr);
27 DButtonBoxButton(QStyle::StandardPixmap iconType = static_cast<QStyle::StandardPixmap>(-1),
28 const QString &text = QString(), QWidget *parent = nullptr);
29 DButtonBoxButton(DStyle::StandardPixmap iconType = static_cast<DStyle::StandardPixmap>(-1),
30 const QString &text = QString(), QWidget *parent = nullptr);
31 DButtonBoxButton(const DDciIcon &dciIcon, const QString &text = QString(), QWidget *parent = nullptr);
32
33 void setIcon(const QIcon &icon);
34 void setIcon(QStyle::StandardPixmap iconType);
35 void setIcon(DStyle::StandardPixmap iconType);
36
37 void setIcon(const DDciIcon &icon);
38 DDciIcon dciIcon() const;
39
40 QSize iconSize() const;
41 QSize sizeHint() const;
42 QSize minimumSizeHint() const override;
43
44private:
45 void initStyleOption(DStyleOptionButtonBoxButton *option) const;
46
47 void paintEvent(QPaintEvent *e) override;
48 void keyPressEvent(QKeyEvent *event) override;
49 bool event(QEvent *e) override;
50};
51
53class DButtonBox : public QWidget, public DCORE_NAMESPACE::DObject
54{
55 Q_OBJECT
56 D_DECLARE_PRIVATE(DButtonBox)
57
58public:
59 explicit DButtonBox(QWidget *parent = nullptr);
60
61 Qt::Orientation orientation() const;
62 void setOrientation(Qt::Orientation orientation);
63
64 void setButtonList(const QList<DButtonBoxButton*> &list, bool checkable);
65 QList<QAbstractButton*> buttonList() const;
66
67 QAbstractButton * checkedButton() const;
68 // no setter on purpose!
69
70 QAbstractButton *button(int id) const;
71 void setId(QAbstractButton *button, int id);
72 int id(QAbstractButton *button) const;
73 int checkedId() const;
74
75Q_SIGNALS:
76 void buttonClicked(QAbstractButton *);
77 void buttonPressed(QAbstractButton *);
78 void buttonReleased(QAbstractButton *);
79 void buttonToggled(QAbstractButton *, bool);
80
81private:
82 void paintEvent(QPaintEvent *e) override;
83
84 friend class DButtonBoxButton;
85};
86
87DWIDGET_END_NAMESPACE
88
89#endif // DBUTTONBOX_H
DButtonBoxButton 提供了修改了样式的按钮.
Definition: dbuttonbox.h:20
Definition: dbuttonbox_p.h:20
DButtonBox 类似于 QButtonGroup 的类.
Definition: dbuttonbox.h:54
Definition: dstyleoption.h:71
Orientation