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;
QItemDelegate::paint(painter,option,index);
// add remove button
QWindow *window = view->window()->windowHandle();
const QPixmap iconPixmap = icon.pixmap(window, option.rect.size());
const qreal devicePixelRatio = painter->device()->devicePixelRatio();
const QPixmap iconPixmap = icon.pixmap(option.rect.size(), devicePixelRatio);
QRect pixmapRect = QStyle::alignedRect(option.direction,
Qt::AlignRight | Qt::AlignVCenter,
iconPixmap.size() / window->devicePixelRatio(),
iconPixmap.size() / devicePixelRatio,
option.rect);
if (!clearIconSize.isValid())
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 result;
QWindow *window = QApplication::allWidgets().constFirst()->windowHandle();
const qreal devicePixelRatio = QApplication::allWidgets().constFirst()->devicePixelRatio();
for (const QIcon &icon: icons)
for (const QIcon::Mode mode: {QIcon::Disabled, QIcon::Normal})
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;
}

View File

@@ -118,10 +118,9 @@ void InfoLabel::paintEvent(QPaintEvent *event)
p.restore();
}
const QIcon &icon = iconForType(m_type);
QWindow *window = this->window()->windowHandle();
const QIcon::Mode mode = !this->isEnabled() ? QIcon::Disabled : QIcon::Normal;
const QPixmap iconPx =
icon.pixmap(window, QSize(iconSize, iconSize) * devicePixelRatio(), mode);
icon.pixmap(QSize(iconSize, iconSize) * devicePixelRatio(), devicePixelRatio(), mode);
p.drawPixmap(iconRect, iconPx);
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
// different than 1. The shadow drawing caluculations are done in device
// pixels.
QWindow *window = dynamic_cast<QWidget*>(p->device())->window()->windowHandle();
QPixmap px = icon.pixmap(window, rect.size(), iconMode);
QPixmap px = icon.pixmap(rect.size(), devicePixelRatio, iconMode);
int radius = int(dipRadius * devicePixelRatio);
QPoint offset = dipOffset * devicePixelRatio;
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 =
icon.availableSizes().count() == icon.availableSizes(QIcon::Disabled).count();
if (!hasDisabledState)
px = disabledSideBarIcon(icon.pixmap(window, rect.size()));
px = disabledSideBarIcon(icon.pixmap(rect.size(), devicePixelRatio));
} else if (creatorTheme()->flag(Theme::ToolBarIconShadow)) {
// Draw shadow
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);
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>();
if (!icon.isNull())
if (!icon.isNull()) {
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);
QTC_ASSERT(item, painter->restore(); return);

View File

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

View File

@@ -79,15 +79,12 @@ void IconCheckboxItemDelegate::paint(QPainter *painter,
if (rowIsPropertyRole(modelIndex.model(), modelIndex) || getModelNode(modelIndex).isRootNode())
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);
QPoint iconPosition(styleOption.rect.left() + (styleOption.rect.width() - iconSize.width()) / 2,
styleOption.rect.top() + 2 + delegateMargin);
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
if (modelIndex.column() == NavigatorTreeModel::ColumnType::Lock)