Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qheaderview.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// Qt-Security score:significant reason:default
4
5#ifndef QHEADERVIEW_H
6#define QHEADERVIEW_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtWidgets/qabstractitemview.h>
10#include <QtCore/qlist.h>
11
13
14class tst_QHeaderView;
15
16QT_BEGIN_NAMESPACE
17
18class QHeaderViewPrivate;
19class QStyleOptionHeader;
20
21class Q_WIDGETS_EXPORT QHeaderView : public QAbstractItemView
22{
23 Q_OBJECT
24 Q_PROPERTY(bool firstSectionMovable READ isFirstSectionMovable WRITE setFirstSectionMovable)
25 Q_PROPERTY(bool showSortIndicator READ isSortIndicatorShown WRITE setSortIndicatorShown)
26 Q_PROPERTY(bool sectionsMovable READ sectionsMovable WRITE setSectionsMovable)
27 Q_PROPERTY(bool sectionsClickable READ sectionsClickable WRITE setSectionsClickable)
28 Q_PROPERTY(bool highlightSections READ highlightSections WRITE setHighlightSections)
29 Q_PROPERTY(bool stretchLastSection READ stretchLastSection WRITE setStretchLastSection)
30 Q_PROPERTY(bool cascadingSectionResizes READ cascadingSectionResizes
31 WRITE setCascadingSectionResizes)
32 Q_PROPERTY(int defaultSectionSize READ defaultSectionSize WRITE setDefaultSectionSize
33 RESET resetDefaultSectionSize)
34 Q_PROPERTY(int minimumSectionSize READ minimumSectionSize WRITE setMinimumSectionSize)
35 Q_PROPERTY(int maximumSectionSize READ maximumSectionSize WRITE setMaximumSectionSize)
36 Q_PROPERTY(Qt::Alignment defaultAlignment READ defaultAlignment WRITE setDefaultAlignment)
37 Q_PROPERTY(bool sortIndicatorClearable READ isSortIndicatorClearable
38 WRITE setSortIndicatorClearable NOTIFY sortIndicatorClearableChanged)
39
40public:
41
42 enum ResizeMode
43 {
44 Interactive,
45 Stretch,
46 Fixed,
47 ResizeToContents,
48 Custom = Fixed
49 };
50 Q_ENUM(ResizeMode)
51
52 explicit QHeaderView(Qt::Orientation orientation, QWidget *parent = nullptr);
53 virtual ~QHeaderView();
54
55 void setModel(QAbstractItemModel *model) override;
56
57 Qt::Orientation orientation() const;
58 int offset() const;
59 int length() const;
60 QSize sizeHint() const override;
61 void setVisible(bool v) override;
62 int sectionSizeHint(int logicalIndex) const;
63
64 int visualIndexAt(int position) const;
65 int logicalIndexAt(int position) const;
66
67 inline int logicalIndexAt(int x, int y) const;
68 inline int logicalIndexAt(const QPoint &pos) const;
69
70 int sectionSize(int logicalIndex) const;
71 int sectionPosition(int logicalIndex) const;
72 int sectionViewportPosition(int logicalIndex) const;
73
74 void moveSection(int from, int to);
75 void swapSections(int first, int second);
76 void resizeSection(int logicalIndex, int size);
77 void resizeSections(QHeaderView::ResizeMode mode);
78
79 bool isSectionHidden(int logicalIndex) const;
80 void setSectionHidden(int logicalIndex, bool hide);
81 int hiddenSectionCount() const;
82
83 inline void hideSection(int logicalIndex);
84 inline void showSection(int logicalIndex);
85
86 int count() const;
87 int visualIndex(int logicalIndex) const;
88 int logicalIndex(int visualIndex) const;
89
90 void setSectionsMovable(bool movable);
91 bool sectionsMovable() const;
92 void setFirstSectionMovable(bool movable);
93 bool isFirstSectionMovable() const;
94
95 void setSectionsClickable(bool clickable);
96 bool sectionsClickable() const;
97
98 void setHighlightSections(bool highlight);
99 bool highlightSections() const;
100
101 ResizeMode sectionResizeMode(int logicalIndex) const;
102 void setSectionResizeMode(ResizeMode mode);
103 void setSectionResizeMode(int logicalIndex, ResizeMode mode);
104
105 void setResizeContentsPrecision(int precision);
106 int resizeContentsPrecision() const;
107
108 int stretchSectionCount() const;
109
110 void setSortIndicatorShown(bool show);
111 bool isSortIndicatorShown() const;
112
113 void setSortIndicator(int logicalIndex, Qt::SortOrder order);
114 int sortIndicatorSection() const;
115 Qt::SortOrder sortIndicatorOrder() const;
116
117 void setSortIndicatorClearable(bool clearable);
118 bool isSortIndicatorClearable() const;
119
120 bool stretchLastSection() const;
121 void setStretchLastSection(bool stretch);
122
123 bool cascadingSectionResizes() const;
124 void setCascadingSectionResizes(bool enable);
125
126 int defaultSectionSize() const;
127 void setDefaultSectionSize(int size);
128 void resetDefaultSectionSize();
129
130 int minimumSectionSize() const;
131 void setMinimumSectionSize(int size);
132 int maximumSectionSize() const;
133 void setMaximumSectionSize(int size);
134
135 Qt::Alignment defaultAlignment() const;
136 void setDefaultAlignment(Qt::Alignment alignment);
137
138 void doItemsLayout() override;
139 bool sectionsMoved() const;
140 bool sectionsHidden() const;
141
142#ifndef QT_NO_DATASTREAM
143 QByteArray saveState() const;
144 bool restoreState(const QByteArray &state);
145#endif
146
147 void reset() override;
148
149public Q_SLOTS:
150 void setOffset(int offset);
151 void setOffsetToSectionPosition(int visualIndex);
152 void setOffsetToLastSection();
153 void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast);
154
155Q_SIGNALS:
156 void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex);
157 void sectionResized(int logicalIndex, int oldSize, int newSize);
158 void sectionPressed(int logicalIndex);
159 void sectionClicked(int logicalIndex);
160 void sectionEntered(int logicalIndex);
161 void sectionDoubleClicked(int logicalIndex);
162 void sectionCountChanged(int oldCount, int newCount);
163 void sectionHandleDoubleClicked(int logicalIndex);
164 void geometriesChanged();
165 void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order);
166 void sortIndicatorClearableChanged(bool clearable);
167
168protected Q_SLOTS:
169 void updateSection(int logicalIndex);
170 void resizeSections();
171 void sectionsInserted(const QModelIndex &parent, int logicalFirst, int logicalLast);
172 void sectionsAboutToBeRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast);
173
174protected:
175 QHeaderView(QHeaderViewPrivate &dd, Qt::Orientation orientation, QWidget *parent = nullptr);
176 void initialize();
177
178 void initializeSections();
179 void initializeSections(int start, int end);
180 void currentChanged(const QModelIndex &current, const QModelIndex &old) override;
181
182 bool event(QEvent *e) override;
183 void paintEvent(QPaintEvent *e) override;
184 void mousePressEvent(QMouseEvent *e) override;
185 void mouseMoveEvent(QMouseEvent *e) override;
186 void mouseReleaseEvent(QMouseEvent *e) override;
187 void mouseDoubleClickEvent(QMouseEvent *e) override;
188 bool viewportEvent(QEvent *e) override;
189
190 virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const;
191 virtual QSize sectionSizeFromContents(int logicalIndex) const;
192
193 int horizontalOffset() const override;
194 int verticalOffset() const override;
195 void updateGeometries() override;
196 void scrollContentsBy(int dx, int dy) override;
197
198 void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight,
199 const QList<int> &roles = QList<int>()) override;
200 void rowsInserted(const QModelIndex &parent, int start, int end) override;
201
202 QRect visualRect(const QModelIndex &index) const override;
203 void scrollTo(const QModelIndex &index, ScrollHint hint) override;
204
205 QModelIndex indexAt(const QPoint &p) const override;
206 bool isIndexHidden(const QModelIndex &index) const override;
207
208 QModelIndex moveCursor(CursorAction, Qt::KeyboardModifiers) override;
209 void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags flags) override;
210 QRegion visualRegionForSelection(const QItemSelection &selection) const override;
211 virtual void initStyleOptionForIndex(QStyleOptionHeader *option, int logicalIndex) const;
212 virtual void initStyleOption(QStyleOptionHeader *option) const;
213
214 friend class QTableView;
215 friend class QTreeView;
216 friend class ::tst_QHeaderView;
217
218private:
219 void initStyleOption(QStyleOptionFrame *option) const override;
220
221 Q_DECLARE_PRIVATE(QHeaderView)
222 Q_DISABLE_COPY(QHeaderView)
223};
224
225inline int QHeaderView::logicalIndexAt(int ax, int ay) const
226{ return orientation() == Qt::Horizontal ? logicalIndexAt(ax) : logicalIndexAt(ay); }
227inline int QHeaderView::logicalIndexAt(const QPoint &apos) const
228{ return logicalIndexAt(apos.x(), apos.y()); }
229inline void QHeaderView::hideSection(int alogicalIndex)
230{ setSectionHidden(alogicalIndex, true); }
231inline void QHeaderView::showSection(int alogicalIndex)
232{ setSectionHidden(alogicalIndex, false); }
233
234QT_END_NAMESPACE
235
236#endif // QHEADERVIEW_H
The QApplication class manages the GUI application's control flow and main settings.
The QGroupBox widget provides a group box frame with a title.
Definition qgroupbox.h:18
The QHeaderView class provides a header row or header column for item views.
Definition qheaderview.h:22
The QLabel widget provides a text or image display.
Definition qlabel.h:21
The QMessageBox class provides a modal dialog for informing the user or for asking the user a questio...
Definition qmessagebox.h:23
The QPaintEngineState class provides information about the active paint engine's current state....
\inmodule QtGui
virtual QPixmap createPixmap(QSize size)
friend class QPainter
void setSystemRect(const QRect &rect)
void setActive(bool newState)
Sets the active state of the paint engine to state.
virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual QPixmap createPixmapFromImage(QImage image, Qt::ImageConversionFlags flags=Qt::AutoColor)
friend class QWidgetPrivate
QRect systemRect() const
QPaintEngine(PaintEngineFeatures features=PaintEngineFeatures())
Creates a paint engine with the featureset specified by caps.
friend class QFontEngineQPF2
friend class QMacCGContext
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
This function draws the text item textItem at position p.
virtual void drawLines(const QLineF *lines, int lineCount)
The default implementation splits the list of lines in lines into lineCount separate calls to drawPat...
PolygonDrawMode
\value OddEvenMode The polygon should be drawn using OddEven fill rule.
virtual void drawPoints(const QPointF *points, int pointCount)
Draws the first pointCount points in the buffer points.
virtual void drawRects(const QRectF *rects, int rectCount)
Draws the first rectCount rectangles in the buffer rects.
virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags=Qt::AutoColor)
Reimplement this function to draw the part of the image specified by the sr rectangle in the given re...
QPainter * painter() const
Returns the paint engine's painter.
void fix_neg_rect(int *x, int *y, int *w, int *h)
void setPaintDevice(QPaintDevice *device)
virtual QPoint coordinateOffset() const
virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode)
Reimplement this virtual function to draw the polygon defined by the pointCount first points in point...
void setDirty(DirtyFlags df)
void setSystemClip(const QRegion &baseClip)
QPaintEngineState * state
friend class QPainterReplayer
friend class QX11GLPlatformPixmap
PaintEngineFeatures gccaps
void clearDirty(DirtyFlags df)
bool hasFeature(PaintEngineFeatures feature) const
Returns true if the paint engine supports the specified feature; otherwise returns false.
virtual void drawEllipse(const QRectF &r)
Reimplement this function to draw the largest ellipse that can be contained within rectangle rect.
QRegion systemClip() const
bool isExtended() const
QPaintDevice * paintDevice() const
Returns the device that this engine is painting on, if painting is active; otherwise returns \nullptr...
bool testDirty(DirtyFlags df)
virtual void updateState(const QPaintEngineState &state)=0
Reimplement this function to update the state of a paint engine.
DirtyFlag
\value DirtyPen The pen is dirty and needs to be updated.
Type
\value X11 \value Windows \value MacPrinter \value CoreGraphics \macos's Quartz2D (CoreGraphics) \val...
virtual Type type() const =0
Reimplement this function to return the paint engine \l{Type}.
void drawPath(const QPainterPath &path)
Draws the given painter path using the current pen for outline and the current brush for filling.
bool begin(QPaintDevice *)
Begins painting the paint device and returns true if successful; otherwise returns false.
void drawRects(const QRectF *rects, int rectCount)
Draws the first rectCount of the given rectangles using the current pen and brush.
friend class QFontEngine
Definition qpainter.h:432
void drawLines(const QLineF *lines, int lineCount)
Draws the first lineCount lines in the array lines using the current pen.
friend class QFontEngineMac
Definition qpainter.h:435
friend class QWin32PaintEngine
Definition qpainter.h:440
friend class QWin32PaintEnginePrivate
Definition qpainter.h:441
friend class QWidget
Definition qpainter.h:431
friend class QFontEngineWin
Definition qpainter.h:436
void drawEllipse(const QRectF &r)
Draws the ellipse defined by the given rectangle.
bool end()
Ends painting.
void drawPoints(const QPointF *points, int pointCount)
Draws the first pointCount points in the array points using the current pen's color.
bool isActive() const
Returns true if begin() has been called and end() has not yet been called; otherwise returns false.
\inmodule QtGui
\inmodule QtCore\reentrant
Definition qpoint.h:231
The QPolygonF class provides a list of points using floating point precision.
Definition qpolygon.h:96
The QRadioButton widget provides a radio button with a text label.
The QStyleHintReturnMask class provides style hints that return a QRegion.
The QStyleHintReturnVariant class provides style hints that return a QVariant.
\variable QStyleOptionGraphicsItem::exposedRect
\variable QStyleOptionHeaderV2::textElideMode
\variable QStyleOptionDockWidget::title
\variable QStyleOptionMenuItem::menuItemType
\variable QStyleOptionComplex::subControls
\variable QStyleOption::palette
\variable QStyleOptionFocusRect::backgroundColor
The QStyleOptionGraphicsItem class is used to describe the parameters needed to draw a QGraphicsItem.
\variable QStyleOptionFrame::features
The QStyleOptionHeaderV2 class is used to describe the parameters for drawing a header.
\variable QStyleOptionProgressBar::minimum
\variable QStyleOptionMenuItemV2::mouseDown
\variable QStyleOptionToolBox::selectedPosition
\variable QStyleOptionComboBox::editable
The QStyleOption class stores the parameters used by QStyle functions.
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
Definition qtextedit.h:30
Internal QTextItem.
\inmodule QtGui
uint is_closing
Definition qwidget.h:82
QPalette pal
Definition qwidget.h:91
uint focus_policy
Definition qwidget.h:80
uint in_show
Definition qwidget.h:83
uint unused
Definition qwidget.h:89
uint fstrut_dirty
Definition qwidget.h:85
QRect wrect
Definition qwidget.h:93
QRect crect
Definition qwidget.h:90
uint in_destructor
Definition qwidget.h:88
uint sizehint_forced
Definition qwidget.h:81
uint in_set_window_state
Definition qwidget.h:84
Qt::WindowFlags window_flags
Definition qwidget.h:78
QFont fnt
Definition qwidget.h:92
uint window_modality
Definition qwidget.h:87
uint window_state
Definition qwidget.h:79
WId winid
Definition qwidget.h:76
uint context_menu_policy
Definition qwidget.h:86
uint widget_attributes
Definition qwidget.h:77
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
The QWindows11Style class provides a look and feel suitable for applications on Microsoft Windows 11.
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
void polish(QWidget *widget) override
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const override
QWindows11Style(QWindows11StylePrivate &dd)
void polish(QPalette &pal) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget=nullptr) const override
~QWindows11Style() override
Destructor.
HBITMAP buffer(int w=0, int h=0)
static int fixedPixelMetric(QStyle::PixelMetric pm)
static HDC hdcForWidgetBackingStore(const QWidget *widget)
static QBackingStore * backingStoreForWidget(const QWidget *widget)
bool swapAlphaChannel(const QRect &rect, bool allPixels=false)
bool drawBackgroundThruNativeBuffer(QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio, qreal correctionFactor)
static HWND winId(const QWidget *widget)
void init(bool force=false)
static bool isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget)
bool drawBackgroundDirectly(HDC dc, QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio)
static bool isItemViewDelegateLineEdit(const QWidget *widget)
static bool useVista(bool update=false)
bool fixAlphaChannel(const QRect &rect)
void cleanup(bool force=false)
bool isTransparent(QWindowsThemeData &QWindowsThemeData)
bool hasAlphaChannel(const QRect &rect)
QRegion region(QWindowsThemeData &QWindowsThemeData)
bool drawBackground(QWindowsThemeData &QWindowsThemeData, qreal correctionFactor=1)
static HTHEME createTheme(int theme, const QWidget *widget)
static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option=nullptr, const QWidget *widget=nullptr)
static QString themeName(int theme)
The QWindowsVistaStyle class provides a look and feel suitable for applications on Microsoft Windows ...
QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const override
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget=nullptr) const override
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void polish(QWidget *widget) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget=nullptr) const override
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
\reimp
~QWindowsVistaStyle() override
Destructor.
void polish(QPalette &pal) override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget=nullptr) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QWindowsVistaStyle(QWindowsVistaStylePrivate &dd)
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
QString string() const override
void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override
Uses the given painter to paint the icon with the required mode and state into the rectangle rect.
QString key() const override
\variable QIconEngine::ScaledPixmapArgument::size
QIconEngine * clone() const override
Reimplement this method to return a clone of this icon engine.
WinFontIconEngine(const QChar &glyph, const QFont &font)
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
QT_REQUIRE_CONFIG(thread)
T qstyleoption_cast(const QStyleOption *opt)
T qstyleoption_cast(QStyleOption *opt)
WINUI3Color
@ fillControlAltSecondary
@ fillControlTertiary
@ frameColorStrongDisabled
@ textOnAccentPrimary
@ fillControlDefault
@ controlStrokeSecondary
@ frameColorStrong
@ surfaceStroke
@ fillControlDisabled
@ subtleHighlightColor
@ textPrimary
@ controlFillSolid
@ fillAccentSecondary
@ frameColorLight
@ subtlePressedColor
@ textDisabled
@ fillControlSecondary
@ textSecondary
@ controlStrokeOnAccentSecondary
@ fillAccentDefault
@ textOnAccentSecondary
@ focusFrameOuterStroke
@ textOnAccentDisabled
@ fillControlAltQuarternary
@ menuPanelFill
@ controlStrongFill
@ controlStrokePrimary
@ fillAccentDisabled
@ fillControlAltTertiary
@ fillControlAltDisabled
@ focusFrameInnerStroke
@ fillAccentTertiary
bool operator==(const ThemeMapKey &k1, const ThemeMapKey &k2)
@ UnknownAlpha
size_t qHash(const ThemeMapKey &key)
AlphaChannelType alphaType
ThemeMapKey(const QWindowsThemeData &data)
ThemeMapKey()=default