Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qplaintextedit_p.h
Go to the documentation of this file.
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 QPLAINTEXTEDIT_P_H
5#define QPLAINTEXTEDIT_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtWidgets/private/qtwidgetsglobal_p.h>
19#include "private/qabstractscrollarea_p.h"
20#include "QtGui/qtextdocumentfragment.h"
21#if QT_CONFIG(scrollbar)
22#include "QtWidgets/qscrollbar.h"
23#endif
24#include "QtGui/qtextcursor.h"
25#include "QtGui/qtextformat.h"
26#if QT_CONFIG(menu)
27#include "QtWidgets/qmenu.h"
28#endif
29#include "QtGui/qabstracttextdocumentlayout.h"
30#include "QtCore/qbasictimer.h"
31#include "qplaintextedit.h"
32
33#include "private/qwidgettextcontrol_p.h"
34
35#include <QtCore/qpointer.h>
36
38
40
41class QMimeData;
42
43class QPlainTextEdit;
44class ExtraArea;
45
47{
49public:
51
52
53 QMimeData *createMimeDataFromSelection() const override;
54 bool canInsertFromMimeData(const QMimeData *source) const override;
55 void insertFromMimeData(const QMimeData *source) override;
56 int hitTest(const QPointF &point, Qt::HitTestAccuracy = Qt::FuzzyHit) const override;
57 QRectF blockBoundingRect(const QTextBlock &block) const override;
58 QString anchorAt(const QPointF &pos) const override;
59 inline QRectF cursorRect(const QTextCursor &cursor) const {
61 r.setLeft(qMax(r.left(), (qreal) 0.));
62 return r;
63 }
64 inline QRectF cursorRect() { return cursorRect(textCursor()); }
69
70
74
75 QVariant loadResource(int type, const QUrl &name) override {
77 }
78
79};
80
81
82class QPlainTextEditPrivate : public QAbstractScrollAreaPrivate
83{
84 Q_DECLARE_PUBLIC(QPlainTextEdit)
85public:
87
88 void init(const QString &txt = QString());
89 void repaintContents(const QRectF &contentsRect);
91
92 inline QPoint mapToContents(const QPoint &point) const
93 { return QPoint(point.x() + horizontalOffset(), point.y() + verticalOffset()); }
94
96 void verticalScrollbarActionTriggered(int action);
98 void relayoutDocument();
99
100 void pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode, bool moveCursor = true);
101
102 inline int horizontalOffset() const
103 { return (q_func()->isRightToLeft() ? (hbar->maximum() - hbar->value()) : hbar->value()); }
104 qreal verticalOffset(int topBlock, int topLine) const;
105 qreal verticalOffset() const;
106
109
111
113#ifdef QT_KEYPAD_NAVIGATION
114 QBasicTimer deleteAllTimer;
115#endif
118
120 qreal topLineFracture = 0; // for non-int sized fonts
125 int topLine = 0;
126
135
136 void setTopLine(int visualTopLine, int dx = 0);
137 void setTopBlock(int newTopBlock, int newTopLine, int dx = 0);
138
139 void ensureVisible(int position, bool center, bool forceCenter = false);
140 void ensureCursorVisible(bool center = false);
141 void updateViewport();
142
143 QPointer<QPlainTextDocumentLayout> documentLayoutPtr;
144
146
149 inline bool placeHolderTextToBeShown() const
150 {
151 Q_Q(const QPlainTextEdit);
152 return q->document()->isEmpty() && !q->placeholderText().isEmpty();
153 }
154};
155
157
158#endif // QPLAINTEXTEDIT_P_H
\inmodule QtCore
Definition qbasictimer.h:18
\inmodule QtCore
Definition qcoreevent.h:45
\inmodule QtCore
Definition qmimedata.h:16
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
QVariant loadResource(int type, const QUrl &name) override
void ensureCursorVisible() override
QPlainTextEdit * textEdit
QRectF cursorRect(const QTextCursor &cursor) const
void insertFromMimeData(const QMimeData *source) override
bool canInsertFromMimeData(const QMimeData *source) const override
QTextBlock firstVisibleBlock() const
QRectF blockBoundingRect(const QTextBlock &block) const override
int hitTest(const QPointF &point, Qt::HitTestAccuracy=Qt::FuzzyHit) const override
QString anchorAt(const QPointF &pos) const override
QPlainTextEditControl(QPlainTextEdit *parent)
QMimeData * createMimeDataFromSelection() const override
void sendControlEvent(QEvent *e)
void pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode, bool moveCursor=true)
QPlainTextEditControl * control
void repaintContents(const QRectF &contentsRect)
void append(const QString &text, Qt::TextFormat format=Qt::AutoText)
void ensureVisible(int position, bool center, bool forceCenter=false)
bool placeHolderTextToBeShown() const
QTextOption::WrapMode wordWrap
void init(const QString &txt=QString())
QPlainTextEdit::LineWrapMode lineWrap
void setTopLine(int visualTopLine, int dx=0)
void verticalScrollbarActionTriggered(int action)
QPointer< QPlainTextDocumentLayout > documentLayoutPtr
QPoint mapToContents(const QPoint &point) const
void ensureCursorVisible(bool center=false)
void setTopBlock(int newTopBlock, int newTopLine, int dx=0)
void modificationChanged(bool)
The QPlainTextEdit class provides a widget that is used to edit and display plain text.
virtual QVariant loadResource(int type, const QUrl &name)
Loads the resource specified by the given type and name.
void ensureCursorVisible()
Ensures that the cursor is visible by scrolling the text edit if necessary.
LineWrapMode
\value NoWrap \value WidgetWidth
\inmodule QtCore\reentrant
Definition qpoint.h:217
\inmodule QtCore\reentrant
Definition qpoint.h:25
constexpr int x() const noexcept
Returns the x coordinate of this point.
Definition qpoint.h:130
constexpr int y() const noexcept
Returns the y coordinate of this point.
Definition qpoint.h:135
\inmodule QtCore\reentrant
Definition qrect.h:484
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\reentrant
\reentrant \inmodule QtGui
Definition qtextcursor.h:30
MoveMode
\value MoveAnchor Moves the anchor to the same position as the cursor itself.
Definition qtextcursor.h:47
MoveOperation
\value NoMove Keep the cursor where it is
Definition qtextcursor.h:61
WrapMode
This enum describes how text is wrapped in a document.
Definition qtextoption.h:60
@ WrapAtWordBoundaryOrAnywhere
Definition qtextoption.h:65
\inmodule QtCore
Definition qurl.h:94
\inmodule QtCore
Definition qvariant.h:65
QTextCursor textCursor() const
virtual void processEvent(QEvent *e, const QTransform &transform, QWidget *contextWidget=nullptr)
QString text
QCursor cursor
Combined button and popup list for selecting options.
TextFormat
@ AutoText
HitTestAccuracy
Definition qnamespace.h:203
@ FuzzyHit
Definition qnamespace.h:203
constexpr const T & qMax(const T &a, const T &b)
Definition qminmax.h:42
GLboolean r
[2]
GLenum type
GLuint name
GLint GLsizei GLsizei GLenum format
GLsizei GLsizei GLchar * source
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
#define emit
unsigned int uint
Definition qtypes.h:34
double qreal
Definition qtypes.h:187
Text files * txt
view viewport() -> scroll(dx, dy, deviceRect)