Qt Utilities 6.18.1
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;
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
virtual bool isCleared() const
Returns whether the related widget is cleared.
void updateClearButtonVisibility(bool visible)
Updates the visibility of the clear button.
QHBoxLayout * buttonLayout()
Returns the layout manager holding the buttons.
virtual void handleCustomLayoutCreated()
Applies additional handling when the button layout has been created.
ButtonOverlay(QWidget *widget)
Constructs a button overlay for the specified widget.
void insertCustomAction(int index, QAction *action)
Inserts a custom action at the specified index.
bool isInfoButtonEnabled() const
Returns whether the info button is enabled.
void enableInfoButton(const QPixmap &pixmap, const QString &infoText)
Shows an info button with the specified pixmap and infoText.
void removeCustomButton(QWidget *button)
Removes the specified custom button; does nothing if button has not been added.
bool isClearButtonEnabled() const
Returns whether the clear button is enabled.
virtual void handleClearButtonClicked()
Clears the related widget.
void insertCustomButton(int index, QWidget *button)
Inserts a custom button at the specified index.
bool isUsingCustomLayout() const
Returns whether the "custom approach" mentioned in the class documentation is used.
void addCustomButton(QWidget *button)
Adds a custom button.
void removeCustomAction(QAction *action)
Removes the specified custom action; does nothing if action has not been added.
void disableInfoButton()
Hides an info button if one is shown.
void addCustomAction(QAction *action)
Adds a custom action.
void setClearButtonEnabled(bool enabled)
Sets whether the clear button is enabled.
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