1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QPUSHBUTTON_H
5#define QPUSHBUTTON_H
6
7#include <QtWidgets/qtwidgetsglobal.h>
8#include <QtWidgets/qabstractbutton.h>
9
10QT_REQUIRE_CONFIG(pushbutton);
11
12QT_BEGIN_NAMESPACE
13
14
15class QPushButtonPrivate;
16class QMenu;
17class QStyleOptionButton;
18
19class Q_WIDGETS_EXPORT QPushButton : public QAbstractButton
20{
21 Q_OBJECT
22
23 Q_PROPERTY(bool autoDefault READ autoDefault WRITE setAutoDefault)
24 Q_PROPERTY(bool default READ isDefault WRITE setDefault)
25 Q_PROPERTY(bool flat READ isFlat WRITE setFlat)
26
27public:
28 explicit QPushButton(QWidget *parent = nullptr);
29 explicit QPushButton(const QString &text, QWidget *parent = nullptr);
30 QPushButton(const QIcon& icon, const QString &text, QWidget *parent = nullptr);
31 ~QPushButton();
32
33 QSize sizeHint() const override;
34 QSize minimumSizeHint() const override;
35
36 bool autoDefault() const;
37 void setAutoDefault(bool);
38 bool isDefault() const;
39 void setDefault(bool);
40
41#if QT_CONFIG(menu)
42 void setMenu(QMenu* menu);
43 QMenu* menu() const;
44#endif
45
46 void setFlat(bool);
47 bool isFlat() const;
48
49public Q_SLOTS:
50#if QT_CONFIG(menu)
51 void showMenu();
52#endif
53
54protected:
55 bool event(QEvent *e) override;
56 void paintEvent(QPaintEvent *) override;
57 void keyPressEvent(QKeyEvent *) override;
58 void focusInEvent(QFocusEvent *) override;
59 void focusOutEvent(QFocusEvent *) override;
60 void mouseMoveEvent(QMouseEvent *) override;
61 virtual void initStyleOption(QStyleOptionButton *option) const;
62 bool hitButton(const QPoint &pos) const override;
63 QPushButton(QPushButtonPrivate &dd, QWidget* parent = nullptr);
64
65public:
66
67private:
68 Q_DISABLE_COPY(QPushButton)
69 Q_DECLARE_PRIVATE(QPushButton)
70#if QT_CONFIG(menu)
71 Q_PRIVATE_SLOT(d_func(), void _q_popupPressed())
72#endif
73};
74
75QT_END_NAMESPACE
76
77#endif // QPUSHBUTTON_H
78

source code of qtbase/src/widgets/widgets/qpushbutton.h