Qt Utilities 6.14.0
Common Qt related C++ classes and routines used by my applications such as dialogs, widgets and models
Loading...
Searching...
No Matches
buttonoverlay.h
Go to the documentation of this file.
1#ifndef WIDGETS_BUTTONOVERLAY_H
2#define WIDGETS_BUTTONOVERLAY_H
3
4#include "../global.h"
5
6#include <QtGlobal>
7
8QT_FORWARD_DECLARE_CLASS(QAction)
9QT_FORWARD_DECLARE_CLASS(QWidget)
10QT_FORWARD_DECLARE_CLASS(QHBoxLayout)
11QT_FORWARD_DECLARE_CLASS(QString)
12QT_FORWARD_DECLARE_CLASS(QPixmap)
13QT_FORWARD_DECLARE_CLASS(QMargins)
14QT_FORWARD_DECLARE_CLASS(QRect)
15QT_FORWARD_DECLARE_CLASS(QLineEdit)
16
17namespace QtUtilities {
18
19class IconButton;
20class ClearComboBox;
21class ClearSpinBox;
22class ClearPlainTextEdit;
23class ClearLineEdit;
24
26 // allow these derived classes to use private helpers provided by ButtonOverlay
27 friend class ClearComboBox;
28 friend class ClearSpinBox;
29 friend class ClearPlainTextEdit;
30 friend class ClearLineEdit;
31
32public:
33 explicit ButtonOverlay(QWidget *widget);
34 explicit ButtonOverlay(QWidget *widget, QLineEdit *lineEdit);
35 virtual ~ButtonOverlay();
36
37 bool isUsingCustomLayout() const;
38 QHBoxLayout *buttonLayout();
39 bool isClearButtonEnabled() const;
40 void setClearButtonEnabled(bool enabled);
41 bool isInfoButtonEnabled() const;
42 void enableInfoButton(const QPixmap &pixmap, const QString &infoText);
43 void disableInfoButton();
44 void addCustomButton(QWidget *button);
45 void insertCustomButton(int index, QWidget *button);
46 void removeCustomButton(QWidget *button);
47 void addCustomAction(QAction *action);
48 void insertCustomAction(int index, QAction *action);
49 void removeCustomAction(QAction *action);
50 virtual bool isCleared() const;
51
52protected:
53 void updateClearButtonVisibility(bool visible);
54 virtual void handleClearButtonClicked();
55 virtual void handleCustomLayoutCreated();
56
57private:
58 void fallbackToUsingCustomLayout();
59 QLineEdit *lineEditForWidget() const;
60 void showInfo();
61 void setContentsMarginsFromEditFieldRectAndFrameWidth(const QRect &editFieldRect, int frameWidth, int padding = 0);
62
63 QWidget *m_widget;
64 QWidget *m_buttonWidget;
65 QHBoxLayout *m_buttonLayout;
66 IconButton *m_clearButton;
67 void *m_infoButtonOrAction;
68};
69
70} // namespace QtUtilities
71
72#endif // WIDGETS_BUTTONOVERLAY_H
The ButtonOverlay class is used to display buttons on top of other widgets.
A QComboBox with an embedded button for clearing its contents.
A QLineEdit with an embedded button for clearing its contents.
A QPlainTextEdit with an embedded button for clearing its contents.
A QSpinBox with an embedded button for clearing its contents and the ability to hide the minimum valu...
A simple QAbstractButton implementation displaying a QPixmap.
Definition iconbutton.h:15
#define QT_UTILITIES_EXPORT
Marks the symbol to be exported by the qtutilities library.
Definition global.h:14