Fix QIcon::pixmap() related deprecation warnings

QPixmap pixmap(const QSize &size, qreal devicePixelRatio, Mode mode = Normal, State state = Off) const;
    QT_DEPRECATED_VERSION_X_6_0("Use pixmap(size, devicePixelRatio) instead")
    QPixmap pixmap(QWindow *window, const QSize &size, Mode mode = Normal, State state = Off) const;

Change-Id: I8b08bec86014809887c1915b72c2776bae4a87fb
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2024-06-05 17:58:59 +02:00
parent c40dceced7
commit 355b8e4d1a
7 changed files with 15 additions and 22 deletions

View File

@@ -54,11 +54,11 @@ public:
optCopy.state |= QStyle::State_HasFocus; optCopy.state |= QStyle::State_HasFocus;
QItemDelegate::paint(painter,option,index); QItemDelegate::paint(painter,option,index);
// add remove button // add remove button
QWindow *window = view->window()->windowHandle(); const qreal devicePixelRatio = painter->device()->devicePixelRatio();
const QPixmap iconPixmap = icon.pixmap(window, option.rect.size()); const QPixmap iconPixmap = icon.pixmap(option.rect.size(), devicePixelRatio);
QRect pixmapRect = QStyle::alignedRect(option.direction, QRect pixmapRect = QStyle::alignedRect(option.direction,
Qt::AlignRight | Qt::AlignVCenter, Qt::AlignRight | Qt::AlignVCenter,
iconPixmap.size() / window->devicePixelRatio(), iconPixmap.size() / devicePixelRatio,
option.rect); option.rect);
if (!clearIconSize.isValid()) if (!clearIconSize.isValid())
clearIconSize = pixmapRect.size(); clearIconSize = pixmapRect.size();

View File

@@ -221,11 +221,11 @@ QIcon Icon::modeIcon(const Icon &classic, const Icon &flat, const Icon &flatActi
QIcon Icon::combinedIcon(const QList<QIcon> &icons) QIcon Icon::combinedIcon(const QList<QIcon> &icons)
{ {
QIcon result; QIcon result;
QWindow *window = QApplication::allWidgets().constFirst()->windowHandle(); const qreal devicePixelRatio = QApplication::allWidgets().constFirst()->devicePixelRatio();
for (const QIcon &icon: icons) for (const QIcon &icon: icons)
for (const QIcon::Mode mode: {QIcon::Disabled, QIcon::Normal}) for (const QIcon::Mode mode: {QIcon::Disabled, QIcon::Normal})
for (const QSize &size: icon.availableSizes(mode)) for (const QSize &size: icon.availableSizes(mode))
result.addPixmap(icon.pixmap(window, size, mode), mode); result.addPixmap(icon.pixmap(size, devicePixelRatio, mode), mode);
return result; return result;
} }

View File

@@ -118,10 +118,9 @@ void InfoLabel::paintEvent(QPaintEvent *event)
p.restore(); p.restore();
} }
const QIcon &icon = iconForType(m_type); const QIcon &icon = iconForType(m_type);
QWindow *window = this->window()->windowHandle();
const QIcon::Mode mode = !this->isEnabled() ? QIcon::Disabled : QIcon::Normal; const QIcon::Mode mode = !this->isEnabled() ? QIcon::Disabled : QIcon::Normal;
const QPixmap iconPx = const QPixmap iconPx =
icon.pixmap(window, QSize(iconSize, iconSize) * devicePixelRatio(), mode); icon.pixmap(QSize(iconSize, iconSize) * devicePixelRatio(), devicePixelRatio(), mode);
p.drawPixmap(iconRect, iconPx); p.drawPixmap(iconRect, iconPx);
ElidingLabel::paintEvent(event); ElidingLabel::paintEvent(event);
} }

View File

@@ -551,8 +551,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
// return a high-dpi pixmap, which will in that case have a devicePixelRatio // return a high-dpi pixmap, which will in that case have a devicePixelRatio
// different than 1. The shadow drawing caluculations are done in device // different than 1. The shadow drawing caluculations are done in device
// pixels. // pixels.
QWindow *window = dynamic_cast<QWidget*>(p->device())->window()->windowHandle(); QPixmap px = icon.pixmap(rect.size(), devicePixelRatio, iconMode);
QPixmap px = icon.pixmap(window, rect.size(), iconMode);
int radius = int(dipRadius * devicePixelRatio); int radius = int(dipRadius * devicePixelRatio);
QPoint offset = dipOffset * devicePixelRatio; QPoint offset = dipOffset * devicePixelRatio;
cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); cache = QPixmap(px.size() + QSize(radius * 2, radius * 2));
@@ -563,7 +562,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
const bool hasDisabledState = const bool hasDisabledState =
icon.availableSizes().count() == icon.availableSizes(QIcon::Disabled).count(); icon.availableSizes().count() == icon.availableSizes(QIcon::Disabled).count();
if (!hasDisabledState) if (!hasDisabledState)
px = disabledSideBarIcon(icon.pixmap(window, rect.size())); px = disabledSideBarIcon(icon.pixmap(rect.size(), devicePixelRatio));
} else if (creatorTheme()->flag(Theme::ToolBarIconShadow)) { } else if (creatorTheme()->flag(Theme::ToolBarIconShadow)) {
// Draw shadow // Draw shadow
QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied); QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied);

View File

@@ -53,13 +53,12 @@ void TestResultDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op
const TestResult testResult = resultFilterModel->testResult(index); const TestResult testResult = resultFilterModel->testResult(index);
QTC_ASSERT(testResult.isValid(), painter->restore(); return); QTC_ASSERT(testResult.isValid(), painter->restore(); return);
const QWidget *widget = dynamic_cast<const QWidget*>(painter->device());
QWindow *window = widget ? widget->window()->windowHandle() : nullptr;
QIcon icon = index.data(Qt::DecorationRole).value<QIcon>(); QIcon icon = index.data(Qt::DecorationRole).value<QIcon>();
if (!icon.isNull()) if (!icon.isNull()) {
painter->drawPixmap(positions.left(), positions.top(), painter->drawPixmap(positions.left(), positions.top(),
icon.pixmap(window, QSize(positions.iconSize(), positions.iconSize()))); icon.pixmap(QSize(positions.iconSize(), positions.iconSize()),
painter->device()->devicePixelRatio()));
}
TestResultItem *item = resultFilterModel->itemForIndex(index); TestResultItem *item = resultFilterModel->itemForIndex(index);
QTC_ASSERT(item, painter->restore(); return); QTC_ASSERT(item, painter->restore(); return);

View File

@@ -563,16 +563,15 @@ static void drawPrimitiveTweakedForDarkTheme(QStyle::PrimitiveElement element,
break; break;
} }
case QStyle::PE_IndicatorTabClose: { case QStyle::PE_IndicatorTabClose: {
QWindow *window = widget ? widget->window()->windowHandle() : nullptr; const qreal devicePixelRatio = painter->device()->devicePixelRatio();
QRect iconRect = QRect(0, 0, 16, 16); QRect iconRect = QRect(0, 0, 16, 16);
iconRect.moveCenter(option->rect.center()); iconRect.moveCenter(option->rect.center());
const QIcon::Mode mode = !isEnabled ? QIcon::Disabled : QIcon::Normal; const QIcon::Mode mode = !isEnabled ? QIcon::Disabled : QIcon::Normal;
const static QIcon closeIcon = Utils::Icons::CLOSE_FOREGROUND.icon(); const static QIcon closeIcon = Utils::Icons::CLOSE_FOREGROUND.icon();
if (option->state & QStyle::State_MouseOver && widget) if (option->state & QStyle::State_MouseOver && widget)
widget->style()->drawPrimitive(QStyle::PE_PanelButtonCommand, option, painter, widget); widget->style()->drawPrimitive(QStyle::PE_PanelButtonCommand, option, painter, widget);
const int devicePixelRatio = widget ? widget->devicePixelRatio() : 1;
const QPixmap iconPx = const QPixmap iconPx =
closeIcon.pixmap(window, iconRect.size() * devicePixelRatio, mode); closeIcon.pixmap(iconRect.size() * devicePixelRatio, devicePixelRatio, mode);
painter->drawPixmap(iconRect, iconPx); painter->drawPixmap(iconRect, iconPx);
break; break;
} }

View File

@@ -79,15 +79,12 @@ void IconCheckboxItemDelegate::paint(QPainter *painter,
if (rowIsPropertyRole(modelIndex.model(), modelIndex) || getModelNode(modelIndex).isRootNode()) if (rowIsPropertyRole(modelIndex.model(), modelIndex) || getModelNode(modelIndex).isRootNode())
return; // Do not paint icons for property rows or root node return; // Do not paint icons for property rows or root node
QWindow *window = dynamic_cast<QWidget*>(painter->device())->window()->windowHandle();
QTC_ASSERT(window, return);
const QSize iconSize(16, 16); const QSize iconSize(16, 16);
QPoint iconPosition(styleOption.rect.left() + (styleOption.rect.width() - iconSize.width()) / 2, QPoint iconPosition(styleOption.rect.left() + (styleOption.rect.width() - iconSize.width()) / 2,
styleOption.rect.top() + 2 + delegateMargin); styleOption.rect.top() + 2 + delegateMargin);
const QIcon::State state = isChecked(modelIndex) ? QIcon::State::On : QIcon::State::Off; const QIcon::State state = isChecked(modelIndex) ? QIcon::State::On : QIcon::State::Off;
const QPixmap iconPixmap = m_icon.pixmap(window, iconSize, mode, state); const QPixmap iconPixmap = m_icon.pixmap(iconSize, painter->device()->devicePixelRatio(), mode, state);
// Shift the lock icon (last column) slightly to the left due to vertical scrollbar width // Shift the lock icon (last column) slightly to the left due to vertical scrollbar width
if (modelIndex.column() == NavigatorTreeModel::ColumnType::Lock) if (modelIndex.column() == NavigatorTreeModel::ColumnType::Lock)