diff --git a/src/kpagemodel.h b/src/kpagemodel.h --- a/src/kpagemodel.h +++ b/src/kpagemodel.h @@ -38,6 +38,7 @@ * Qt::ItemDataRoles it provides the two roles * * @li HeaderRole + * @li HeaderVisibleRole * @li WidgetRole * * which are used to return a header string for a page and a QWidget @@ -79,7 +80,12 @@ * QVariant v = QVariant::fromValue(myWidget); * \endcode */ - WidgetRole + WidgetRole, + /** + * when true, show the page header, if false don't + * @since 5.50 + */ + HeaderVisibleRole }; /** diff --git a/src/kpageview.cpp b/src/kpageview.cpp --- a/src/kpageview.cpp +++ b/src/kpageview.cpp @@ -260,6 +260,11 @@ { Q_Q(KPageView); + const bool headerVisible = model->data(index, KPageModel::HeaderVisibleRole).toBool(); + if (!headerVisible) { + titleWidget->setVisible(false); + return; + } QString header = model->data(index, KPageModel::HeaderRole).toString(); if (header.isNull()) { //TODO KDE5 remove that ugly logic, see also doxy-comments in KPageWidgetItem::setHeader() header = model->data(index, Qt::DisplayRole).toString(); diff --git a/src/kpagewidgetmodel.h b/src/kpagewidgetmodel.h --- a/src/kpagewidgetmodel.h +++ b/src/kpagewidgetmodel.h @@ -62,6 +62,7 @@ */ Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) + Q_PROPERTY(bool headerVisible READ isHeaderVisible WRITE setHeaderVisible) public: /** * Creates a new page widget item. @@ -150,6 +151,18 @@ */ bool isEnabled() const; + /** + * Returns wether the page will show the header title + * @since 5.50 + */ + bool isHeaderVisible() const; + + /** + * Set wether the page shoulddraw the title + * @since 5.50 + */ + void setHeaderVisible(bool visible); + public Q_SLOTS: /** * Sets whether the page widget item is enabled. diff --git a/src/kpagewidgetmodel.cpp b/src/kpagewidgetmodel.cpp --- a/src/kpagewidgetmodel.cpp +++ b/src/kpagewidgetmodel.cpp @@ -33,7 +33,7 @@ { public: Private() - : checkable(false), checked(false), enabled(true) + : checkable(false), checked(false), enabled(true), headerVisible(true) { } @@ -50,6 +50,7 @@ bool checkable : 1; bool checked : 1; bool enabled : 1; + bool headerVisible : 1; }; KPageWidgetItem::KPageWidgetItem(QWidget *widget) @@ -102,6 +103,18 @@ return d->enabled; } +bool KPageWidgetItem::isHeaderVisible() const +{ + return d->headerVisible; +} + +void KPageWidgetItem::setHeaderVisible(bool visible) +{ + d->headerVisible = visible; + + emit changed(); +} + QWidget *KPageWidgetItem::widget() const { return d->widget; @@ -288,6 +301,8 @@ return QVariant(item->pageWidgetItem()->icon()); } else if (role == HeaderRole) { return QVariant(item->pageWidgetItem()->header()); + } else if (role == HeaderVisibleRole) { + return item->pageWidgetItem()->isHeaderVisible(); } else if (role == WidgetRole) { return QVariant::fromValue(item->pageWidgetItem()->widget()); } else if (role == Qt::CheckStateRole) {