summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r--src/widgets/itemviews/qheaderview.cpp45
-rw-r--r--src/widgets/itemviews/qheaderview.h2
-rw-r--r--src/widgets/itemviews/qheaderview_p.h4
-rw-r--r--src/widgets/itemviews/qtableview.cpp4
-rw-r--r--src/widgets/itemviews/qtreeview.cpp2
5 files changed, 48 insertions, 9 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index abd5997ea1..4c5d17ba69 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -1115,10 +1115,15 @@ int QHeaderView::logicalIndex(int visualIndex) const
/*!
\since 5.0
- If \a movable is true, the header may be moved by the user; otherwise it
- is fixed in place.
+ If \a movable is true, the header sections may be moved by the user;
+ otherwise they are fixed in place.
+
+ When used in combination with QTreeView, the first column is not
+ movable (since it contains the tree structure), by default.
+ You can make it movable with setFirstSectionMovable(true).
\sa sectionsMovable(), sectionMoved()
+ \sa setFirstSectionMovable()
*/
void QHeaderView::setSectionsMovable(bool movable)
@@ -1143,6 +1148,9 @@ void QHeaderView::setSectionsMovable(bool movable)
Returns \c true if the header can be moved by the user; otherwise returns
false.
+ By default, sections are movable in QTreeView (except for the first one),
+ and not movable in QTableView.
+
\sa setSectionsMovable()
*/
@@ -1163,6 +1171,39 @@ bool QHeaderView::sectionsMovable() const
*/
/*!
+ \since 5.10
+
+ If \a movable is true, the first column can be moved by the user.
+ In a QTreeView, the first column holds the tree structure and is
+ therefore non-movable by default, even after setSectionsMovable(true).
+
+ It can be made movable again, for instance in the case of flat lists
+ without a tree structure, by calling this method.
+ In such a scenario, it is recommended to call QTreeView::setRootIsDecorated(false)
+ as well.
+
+ This method has no effect unless setSectionsMovable(true) is called as well.
+ \sa setSectionsMovable()
+*/
+void QHeaderView::setFirstSectionMovable(bool movable)
+{
+ Q_D(QHeaderView);
+ d->allowUserMoveOfSection0 = movable;
+}
+
+/*!
+ \since 5.10
+
+ Returns \c true if the first column can be moved by the user,
+ when this header is used in a QTreeView.
+*/
+bool QHeaderView::firstSectionMovable() const
+{
+ Q_D(const QHeaderView);
+ return d->allowUserMoveOfSection0;
+}
+
+/*!
\since 5.0
If \a clickable is true, the header will respond to single clicks.
diff --git a/src/widgets/itemviews/qheaderview.h b/src/widgets/itemviews/qheaderview.h
index ec00d16d10..cfe2d24453 100644
--- a/src/widgets/itemviews/qheaderview.h
+++ b/src/widgets/itemviews/qheaderview.h
@@ -118,6 +118,8 @@ public:
inline QT_DEPRECATED void setMovable(bool movable) { setSectionsMovable(movable); }
inline QT_DEPRECATED bool isMovable() const { return sectionsMovable(); }
#endif
+ void setFirstSectionMovable(bool movable);
+ bool firstSectionMovable() const;
void setSectionsClickable(bool clickable);
bool sectionsClickable() const;
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index 3b8e61af75..d844274618 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -246,10 +246,6 @@ public:
}
}
- inline void setAllowUserMoveOfSection0(bool b) {
- allowUserMoveOfSection0 = b;
- }
-
void clear();
void flipSortIndicator(int section);
void cascadingResize(int visual, int newSize);
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
index fd3bdfd065..3b0a738d38 100644
--- a/src/widgets/itemviews/qtableview.cpp
+++ b/src/widgets/itemviews/qtableview.cpp
@@ -1226,7 +1226,7 @@ void QTableView::setHorizontalHeader(QHeaderView *header)
delete d->horizontalHeader;
d->horizontalHeader = header;
d->horizontalHeader->setParent(this);
- d->horizontalHeader->d_func()->setAllowUserMoveOfSection0(true);
+ d->horizontalHeader->setFirstSectionMovable(true);
if (!d->horizontalHeader->model()) {
d->horizontalHeader->setModel(d->model);
if (d->selectionModel)
@@ -1264,7 +1264,7 @@ void QTableView::setVerticalHeader(QHeaderView *header)
delete d->verticalHeader;
d->verticalHeader = header;
d->verticalHeader->setParent(this);
- d->verticalHeader->d_func()->setAllowUserMoveOfSection0(true);
+ d->verticalHeader->setFirstSectionMovable(true);
if (!d->verticalHeader->model()) {
d->verticalHeader->setModel(d->model);
if (d->selectionModel)
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index 6ea180dcf2..e1cb16db8a 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -311,7 +311,7 @@ void QTreeView::setHeader(QHeaderView *header)
delete d->header;
d->header = header;
d->header->setParent(this);
- d->header->d_func()->setAllowUserMoveOfSection0(false);
+ d->header->setFirstSectionMovable(false);
if (!d->header->model()) {
d->header->setModel(d->model);