tst_QFrame: fix memleak in testPainting()

Similar to 5be58ac9271555eed3a2884d827f30c164d2277d for tst_QWidget,
this test leaked the result of QStyleFactory::create() and the fix is
the same: cache across the test function calls. This time, it's for
performance; there's like 50 different data tags for this function...

Amends a8723871ee7125b97ce5467b94198e93a528c960.

Pick-to: 6.8 6.5 5.15
Change-Id: I95cc1dc4459489904f3a5e0347570eb07ccdfde8
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit 44a2d8cc2066a6230bc26d78070e75e3f19c7832)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2025-03-27 06:48:38 +01:00 committed by Qt Cherry-pick Bot
parent f1bf3cc6ee
commit 681e3fe5c1

View File

@ -19,6 +19,15 @@ private slots:
void testInitStyleOption();
void testPainting_data();
void testPainting();
private:
mutable std::unique_ptr<QStyle> m_style;
QStyle *fusionStyle() const
{
if (!m_style)
m_style.reset(QStyleFactory::create(QStringLiteral("fusion")));
return m_style.get();
}
};
Q_DECLARE_METATYPE(QFrame::Shape)
@ -141,7 +150,7 @@ void tst_QFrame::testPainting()
QFETCH(QFrame::Shadow, shadow);
QFrame frame;
frame.setStyle(QStyleFactory::create(QStringLiteral("fusion")));
frame.setStyle(fusionStyle());
frame.setPalette(qt_fusionPalette());
frame.setFrameStyle(shape | shadow);
frame.setLineWidth(lineWidth);