1/*
2 This file is part of the KDE Libraries
3
4 Copyright (C) 2006 Pino Toscano <toscano.pino@tiscali.it>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#ifndef KBUTTONGROUP_H
23#define KBUTTONGROUP_H
24
25#include <kdeui_export.h>
26#include <QtGui/QGroupBox>
27
28class QAbstractButton;
29
30/**
31 * @short Group box with index of the selected button
32 * KButtonGroup is a simple group box that can keep track of the current selected
33 * button of the ones added to it.
34 *
35 * Use normally as you would with a QGroupBox.
36 *
37 * \image html kbuttongroup.png "KDE Button Group containing 3 KPushButtons"
38 *
39 * @author Pino Toscano <toscano.pino@tiscali.it>
40 */
41class KDEUI_EXPORT KButtonGroup : public QGroupBox
42{
43 Q_OBJECT
44
45 Q_PROPERTY(int current READ selected WRITE setSelected NOTIFY changed USER true)
46
47public:
48 /**
49 * Construct a new empty KGroupBox.
50 */
51 explicit KButtonGroup(QWidget* parent = 0);
52
53 /**
54 * Destroys the widget.
55 */
56 ~KButtonGroup();
57
58 /**
59 * Return the index of the selected QAbstractButton, among the QAbstractButton's
60 * added to the widget.
61 * @return the index of the selected button
62 */
63 int selected() const;
64
65 /**
66 * @return the index of @p button.
67 * @since 4.3
68 */
69 int id(QAbstractButton* button) const;
70
71public Q_SLOTS:
72 /**
73 * Select the \p id -th button
74 */
75 void setSelected(int id);
76
77Q_SIGNALS:
78 /**
79 * The button with index \p id was clicked
80 */
81 void clicked(int id);
82 /**
83 * The button with index \p id was pressed
84 */
85 void pressed(int id);
86 /**
87 * The button with index \p id was released
88 */
89 void released(int id);
90 /**
91 * Emitted when anything (a click on a button, or calling setSelected())
92 * change the id of the current selected. \p id is the index of the new
93 * selected button.
94 */
95 void changed(int id);
96
97protected:
98 /**
99 * Reimplemented from QGroupBox.
100 */
101 virtual void childEvent(QChildEvent* event);
102
103private:
104 Q_PRIVATE_SLOT(d, void slotClicked(int id))
105
106 class Private;
107 friend class Private;
108 Private * const d;
109};
110
111#endif
112
113