avoid using deprecated calls

This commit is contained in:
Uwe Rathmann 2020-03-13 13:32:22 +01:00
parent 53e924a999
commit 062713e8cc
9 changed files with 41 additions and 36 deletions

View File

@ -12,7 +12,8 @@
#include <QskBoxShapeMetrics.h> #include <QskBoxShapeMetrics.h>
#include <QskTextColors.h> #include <QskTextColors.h>
#include <QskTextNode.h> #include <QskTextNode.h>
#include <QskTextOptions.h> // ### remove #include <QskTextOptions.h>
#include <QskFunctions.h>
#include <QFontMetrics> #include <QFontMetrics>
#include <QSGFlatColorMaterial> #include <QSGFlatColorMaterial>
@ -174,7 +175,7 @@ QSGNode* SpeedometerSkinlet::updateLabelsNode( const Speedometer* speedometer, Q
{ {
const QString& text = labels.at( i ); const QString& text = labels.at( i );
auto w = fontMetrics.width( text ); auto w = qskHorizontalAdvance( fontMetrics, text );
auto h = fontMetrics.height(); auto h = fontMetrics.height();
auto adjustX = ( -0.5 * cosine - 0.5 ) * w; auto adjustX = ( -0.5 * cosine - 0.5 ) * w;
auto adjustY = ( -0.5 * sine - 0.5 ) * h; auto adjustY = ( -0.5 * sine - 0.5 ) * h;

View File

@ -10,6 +10,7 @@
#include <QskObjectCounter.h> #include <QskObjectCounter.h>
#include <QskSimpleListBox.h> #include <QskSimpleListBox.h>
#include <QskWindow.h> #include <QskWindow.h>
#include <QskFunctions.h>
#include <QFontMetricsF> #include <QFontMetricsF>
#include <QGuiApplication> #include <QGuiApplication>
@ -46,8 +47,8 @@ class ListBox : public QskSimpleListBox
// can prevent the list box from having to find it out // can prevent the list box from having to find it out
// the expensive way. // the expensive way.
const QFontMetricsF fm( effectiveFont( Cell ) ); const qreal maxWidth = qskHorizontalAdvance( effectiveFont( Cell ), entries.last() );
setColumnWidthHint( 0, fm.width( entries.last() ) ); setColumnWidthHint( 0, maxWidth );
append( entries ); append( entries );
} }

View File

@ -166,3 +166,5 @@ debug {
# Help out Qt Creator # Help out Qt Creator
ide: DEFINES += QT_IDE ide: DEFINES += QT_IDE
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000

View File

@ -6,6 +6,8 @@
#include "TestBox.h" #include "TestBox.h"
#include <QskSizePolicy.h> #include <QskSizePolicy.h>
#include <QskFunctions.h>
#include <QApplication> #include <QApplication>
#include <QListWidget> #include <QListWidget>
#include <QDebug> #include <QDebug>
@ -367,9 +369,7 @@ class MainWidget : public QWidget
const auto r = contentsRect(); const auto r = contentsRect();
const int spacing = 5; const int spacing = 5;
auto fm = QFontMetricsF( m_listBox->font() ); const int w1 = qskHorizontalAdvance( m_listBox->font(), "Test 100" ) + 20;
const int w1 = fm.width( "Test 100" ) + 20;
const int w2 = r.width() - w1 - spacing; const int w2 = r.width() - w1 - spacing;
m_listBox->setGeometry( r.left(), r.top(), w1, r.height() ); m_listBox->setGeometry( r.left(), r.top(), w1, r.height() );

View File

@ -16,6 +16,7 @@
#include <QskAspect.h> #include <QskAspect.h>
#include <QskWindow.h> #include <QskWindow.h>
#include <QskFunctions.h>
#include <QskObjectCounter.h> #include <QskObjectCounter.h>
@ -202,7 +203,7 @@ class LocaleListView final : public QskListView
const QFontMetricsF fm( effectiveFont( Text ) ); const QFontMetricsF fm( effectiveFont( Text ) );
for ( const auto& entry : m_values ) for ( const auto& entry : m_values )
m_maxWidth = qMax( m_maxWidth, fm.width( entry.first ) ); m_maxWidth = qMax( m_maxWidth, qskHorizontalAdvance( fm, entry.first ) );
const QMarginsF padding = marginsHint( Cell | Padding ); const QMarginsF padding = marginsHint( Cell | Padding );
m_maxWidth += padding.left() + padding.right(); m_maxWidth += padding.left() + padding.right();

View File

@ -3,8 +3,11 @@
#include <qguiapplication.h> #include <qguiapplication.h>
#include <qmath.h> #include <qmath.h>
#include <qscreen.h> #include <qscreen.h>
#include <qfont.h>
#include <qfontmetrics.h>
QSK_QT_PRIVATE_BEGIN QSK_QT_PRIVATE_BEGIN
#include <private/qhighdpiscaling_p.h>
#include <private/qguiapplication_p.h> #include <private/qguiapplication_p.h>
QSK_QT_PRIVATE_END QSK_QT_PRIVATE_END
@ -146,6 +149,20 @@ qreal qskDpiScaled( qreal value )
return value * factor; return value * factor;
} }
qreal qskHorizontalAdvance( const QFont& font, const QString& text )
{
return qskHorizontalAdvance( QFontMetricsF( font ), text );
}
qreal qskHorizontalAdvance( const QFontMetricsF& fontMetrics, const QString& text )
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 11, 0 )
return fontMetrics.horizontalAdvance( text );
#else
return fontMetrics.width( text );
#endif
}
bool qskHasPlatformWindowManagement() bool qskHasPlatformWindowManagement()
{ {
if ( auto platform = QGuiApplicationPrivate::platformIntegration() ) if ( auto platform = QGuiApplicationPrivate::platformIntegration() )
@ -162,17 +179,9 @@ QRect qskPlatformScreenGeometry( const QScreen* screen )
return screen->handle()->geometry(); return screen->handle()->geometry();
} }
#if 0
QSK_QT_PRIVATE_BEGIN
#include <private/qhighdpiscaling_p.h>
QSK_QT_PRIVATE_END
qreal qskGlobalScaleFactor() qreal qskGlobalScaleFactor()
{ {
// The value of QT_SCALE_FACTOR // The value of QT_SCALE_FACTOR
const QScreen* noScreen = nullptr; const QScreen* noScreen = nullptr;
return QHighDpiScaling::factor( noScreen ); return QHighDpiScaling::factor( noScreen );
} }
#endif

View File

@ -12,6 +12,9 @@
#include <qrect.h> #include <qrect.h>
class QScreen; class QScreen;
class QFont;
class QFontMetricsF;
class QString;
QSK_EXPORT qreal qskDpiScaled( qreal value ); QSK_EXPORT qreal qskDpiScaled( qreal value );
QSK_EXPORT bool qskHasPlatformWindowManagement(); QSK_EXPORT bool qskHasPlatformWindowManagement();
@ -29,6 +32,9 @@ QSK_EXPORT QRectF qskInnerRectF( const QRectF& rect );
QSK_EXPORT QRectF qskValidOrEmptyInnerRect( QSK_EXPORT QRectF qskValidOrEmptyInnerRect(
const QRectF& rect, const QMarginsF& margins ); const QRectF& rect, const QMarginsF& margins );
QSK_EXPORT qreal qskHorizontalAdvance( const QFont&, const QString& );
QSK_EXPORT qreal qskHorizontalAdvance( const QFontMetricsF&, const QString& );
inline bool qskFuzzyCompare( qreal value1, qreal value2 ) inline bool qskFuzzyCompare( qreal value1, qreal value2 )
{ {
if ( qFuzzyIsNull( value1 ) ) if ( qFuzzyIsNull( value1 ) )

View File

@ -5,6 +5,7 @@
#include "QskSimpleListBox.h" #include "QskSimpleListBox.h"
#include "QskAspect.h" #include "QskAspect.h"
#include "QskFunctions.h"
#include <qfontmetrics.h> #include <qfontmetrics.h>
@ -16,7 +17,7 @@ static inline qreal qskMaxWidth(
qreal max = 0.0; qreal max = 0.0;
for ( int i = 0; i < list.size(); i++ ) for ( int i = 0; i < list.size(); i++ )
{ {
const qreal w = fm.width( list[ i ] ); const qreal w = qskHorizontalAdvance( fm, list[ i ] );
if ( w > max ) if ( w > max )
max = w; max = w;
} }
@ -146,7 +147,7 @@ void QskSimpleListBox::insert( const QString& text, int index )
{ {
if ( m_data->columnWidthHint <= 0.0 ) if ( m_data->columnWidthHint <= 0.0 )
{ {
const auto w = QFontMetricsF( effectiveFont( Cell ) ).width( text ); const auto w = qskHorizontalAdvance( effectiveFont( Cell ), text );
if ( w > m_data->maxTextWidth ) if ( w > m_data->maxTextWidth )
m_data->maxTextWidth = w; m_data->maxTextWidth = w;
} }
@ -168,9 +169,7 @@ void QskSimpleListBox::removeAt( int index )
if ( m_data->columnWidthHint <= 0.0 ) if ( m_data->columnWidthHint <= 0.0 )
{ {
const QFontMetricsF fm( effectiveFont( Cell ) ); const auto w = qskHorizontalAdvance( effectiveFont( Cell ), entries[ index ] );
const auto w = fm.width( entries[ index ] );
if ( w >= m_data->maxTextWidth ) if ( w >= m_data->maxTextWidth )
m_data->maxTextWidth = qskMaxWidth( effectiveFont( Text ), entries ); m_data->maxTextWidth = qskMaxWidth( effectiveFont( Text ), entries );
} }

View File

@ -35,12 +35,6 @@ static bool qskHasScalablePen( const QPainter* painter )
if ( pen.style() != Qt::NoPen && pen.brush().style() != Qt::NoBrush ) if ( pen.style() != Qt::NoPen && pen.brush().style() != Qt::NoBrush )
{ {
scalablePen = !pen.isCosmetic(); scalablePen = !pen.isCosmetic();
if ( !scalablePen && pen.widthF() == 0.0 )
{
const QPainter::RenderHints hints = painter->renderHints();
if ( hints.testFlag( QPainter::NonCosmeticDefaultPen ) )
scalablePen = true;
}
} }
return scalablePen; return scalablePen;
@ -89,15 +83,7 @@ static inline void qskExecCommand(
if ( painter->transform().isScaling() ) if ( painter->transform().isScaling() )
{ {
bool isCosmetic = painter->pen().isCosmetic(); if ( painter->pen().isCosmetic() )
if ( isCosmetic && painter->pen().widthF() == 0.0 )
{
QPainter::RenderHints hints = painter->renderHints();
if ( hints.testFlag( QPainter::NonCosmeticDefaultPen ) )
isCosmetic = false;
}
if ( isCosmetic )
{ {
// OpenGL2 seems to be buggy for cosmetic pens. // OpenGL2 seems to be buggy for cosmetic pens.
// It interpolates curves in too rough steps then // It interpolates curves in too rough steps then