Skip to content

Commit aedbaec

Browse files
Addes support for setting DockWidgetTab icon size via stylesheet
1 parent f6d3d6d commit aedbaec

File tree

3 files changed

+55
-6
lines changed

3 files changed

+55
-6
lines changed

src/DockWidgetTab.cpp

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
#include "DockManager.h"
5252
#include "IconProvider.h"
5353

54-
#include <iostream>
5554

5655
namespace ads
5756
{
@@ -77,6 +76,7 @@ struct DockWidgetTabPrivate
7776
QAbstractButton* CloseButton = nullptr;
7877
QSpacerItem* IconTextSpacer;
7978
QPoint TabDragStartPosition;
79+
QSize IconSize;
8080

8181
/**
8282
* Private data constructor
@@ -186,6 +186,27 @@ struct DockWidgetTabPrivate
186186
DragStartMousePosition = _this->mapFromGlobal(GlobalPos);
187187
}
188188

189+
/**
190+
* Update the icon in case the icon size changed
191+
*/
192+
void updateIcon()
193+
{
194+
if (!IconLabel || Icon.isNull())
195+
{
196+
return;
197+
}
198+
199+
if (IconSize.isValid())
200+
{
201+
IconLabel->setPixmap(Icon.pixmap(IconSize));
202+
}
203+
else
204+
{
205+
IconLabel->setPixmap(Icon.pixmap(_this->style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, _this)));
206+
}
207+
IconLabel->setVisible(true);
208+
}
209+
189210
};
190211
// struct DockWidgetTabPrivate
191212

@@ -570,11 +591,7 @@ void CDockWidgetTab::setIcon(const QIcon& Icon)
570591
}
571592

572593
d->Icon = Icon;
573-
if (d->IconLabel)
574-
{
575-
d->IconLabel->setPixmap(Icon.pixmap(style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this)));
576-
d->IconLabel->setVisible(true);
577-
}
594+
d->updateIcon();
578595
}
579596

580597

@@ -688,6 +705,21 @@ void CDockWidgetTab::updateStyle()
688705
}
689706

690707

708+
//============================================================================
709+
QSize CDockWidgetTab::iconSize() const
710+
{
711+
return d->IconSize;
712+
}
713+
714+
715+
//============================================================================
716+
void CDockWidgetTab::setIconSize(const QSize& Size)
717+
{
718+
d->IconSize = Size;
719+
d->updateIcon();
720+
}
721+
722+
691723

692724

693725
} // namespace ads

src/DockWidgetTab.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
// INCLUDES
3232
//============================================================================
3333
#include <QFrame>
34+
#include <QSize>
3435

3536
#include "ads_globals.h"
3637

@@ -50,6 +51,7 @@ class ADS_EXPORT CDockWidgetTab : public QFrame
5051
{
5152
Q_OBJECT
5253
Q_PROPERTY(bool activeTab READ isActiveTab WRITE setActiveTab NOTIFY activeTabChanged)
54+
Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
5355

5456
private:
5557
DockWidgetTabPrivate* d; ///< private data (pimpl)
@@ -159,6 +161,20 @@ private slots:
159161
*/
160162
void updateStyle();
161163

164+
/**
165+
* Returns the icon size.
166+
* If no explicit icon size has been set, the function returns an invalid
167+
* QSize
168+
*/
169+
QSize iconSize() const;
170+
171+
/**
172+
* Set an explicit icon size.
173+
* If no icon size has been set explicitely, than the tab sets the icon size
174+
* depending on the style
175+
*/
176+
void setIconSize(const QSize& Size);
177+
162178
public slots:
163179
virtual void setVisible(bool visible) override;
164180

src/stylesheets/focus_highlighting.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ ads--CDockWidgetTab {
1616
border-style: solid;
1717
border-width: 0 1px 0 0;
1818
padding: 0 0px;
19+
qproperty-iconSize: 16px 16px;/* this is optional in case you would like to change icon size*/
1920
}
2021

2122
ads--CDockWidgetTab[activeTab="true"] {

0 commit comments

Comments
 (0)