Qt Utilities  6.0.0
Common Qt related C++ classes and routines used by my applications such as dialogs, widgets and models
clearplaintextedit.cpp
Go to the documentation of this file.
1 #include "./clearplaintextedit.h"
2 
3 #include <QHBoxLayout>
4 #include <QScrollBar>
5 
6 using namespace std;
7 
8 namespace QtUtilities {
9 
18 ClearPlainTextEdit::ClearPlainTextEdit(QWidget *parent)
19  : QPlainTextEdit(parent)
20  , ButtonOverlay(viewport())
21 {
22  // set alignment to show buttons in the bottom right corner
23  ButtonOverlay::buttonLayout()->setAlignment(Qt::AlignBottom | Qt::AlignRight);
25  connect(this, &QPlainTextEdit::textChanged, this, &ClearPlainTextEdit::handleTextChanged);
26  // ensure button layout is realigned when scrolling
27  connect(verticalScrollBar(), &QScrollBar::actionTriggered, this, &ClearPlainTextEdit::handleScroll);
28  connect(this, &QPlainTextEdit::cursorPositionChanged, this, &ClearPlainTextEdit::handleScroll);
29 }
30 
35 {
36 }
37 
41 void ClearPlainTextEdit::handleTextChanged()
42 {
43  updateClearButtonVisibility(!document()->isEmpty());
44 }
45 
46 void ClearPlainTextEdit::handleClearButtonClicked()
47 {
48  // do no call clear() here to prevent clearing of undo history
49  QTextCursor cursor(document());
50  cursor.select(QTextCursor::Document);
51  cursor.removeSelectedText();
52 }
53 
54 void ClearPlainTextEdit::handleScroll()
55 {
56  buttonLayout()->update();
57 }
58 
60 {
61  return document()->isEmpty();
62 }
63 
64 } // namespace QtUtilities
clearplaintextedit.h
QtUtilities::ClearPlainTextEdit::~ClearPlainTextEdit
~ClearPlainTextEdit() override
Destroys the clear plain text edit.
Definition: clearplaintextedit.cpp:34
QtUtilities::ClearPlainTextEdit::isCleared
bool isCleared() const override
Returns whether the related widget is cleared.
Definition: clearplaintextedit.cpp:59
QtUtilities::ButtonOverlay
The ButtonOverlay class is used to display buttons on top of other widgets.
Definition: buttonoverlay.h:17
QtUtilities
!
Definition: trylocker.h:8
QtUtilities::ButtonOverlay::buttonLayout
QHBoxLayout * buttonLayout()
Returns the layout manager holding the buttons.
Definition: buttonoverlay.h:50
QtUtilities::ButtonOverlay::updateClearButtonVisibility
void updateClearButtonVisibility(bool visible)
Updates the visibility of the clear button.
Definition: buttonoverlay.cpp:153
QtUtilities::ButtonOverlay::setClearButtonEnabled
void setClearButtonEnabled(bool enabled)
Sets whether the clear button is enabled.
Definition: buttonoverlay.cpp:62