diff --git a/src/gui/editorwidgets/qgshtmlwidgetwrapper.cpp b/src/gui/editorwidgets/qgshtmlwidgetwrapper.cpp index 3a6d7226251b..d679d84a39ef 100644 --- a/src/gui/editorwidgets/qgshtmlwidgetwrapper.cpp +++ b/src/gui/editorwidgets/qgshtmlwidgetwrapper.cpp @@ -19,7 +19,7 @@ #include "qgsexpressioncontextutils.h" #include "qgsapplication.h" #include "qgswebframe.h" - +#include QgsHtmlWidgetWrapper::QgsHtmlWidgetWrapper( QgsVectorLayer *layer, QWidget *editor, QWidget *parent ) : QgsWidgetWrapper( layer, editor, parent ) @@ -46,7 +46,14 @@ void QgsHtmlWidgetWrapper::initWidget( QWidget *editor ) mWidget->setHtml( mHtmlCode ); #ifdef WITH_QTWEBKIT + +#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) const int horizontalDpi = qApp->desktop()->screen()->logicalDpiX(); +#else + QScreen *screen = QGuiApplication::screenAt( mWidget->mapToGlobal( QPoint( mWidget->width() / 2, 0 ) ) ); + const int horizontalDpi = screen->logicalDotsPerInchX(); +#endif + mWidget->setZoomFactor( horizontalDpi / 96.0 ); QWebPage *page = mWidget->page(); diff --git a/src/gui/layout/qgslayoutitemslistview.cpp b/src/gui/layout/qgslayoutitemslistview.cpp index 9eaea30cd1dd..7e3cca77b0ca 100644 --- a/src/gui/layout/qgslayoutitemslistview.cpp +++ b/src/gui/layout/qgslayoutitemslistview.cpp @@ -100,8 +100,13 @@ void QgsLayoutItemsListView::setCurrentLayout( QgsLayout *layout ) header()->setSectionResizeMode( 0, QHeaderView::Fixed ); header()->setSectionResizeMode( 1, QHeaderView::Fixed ); +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) setColumnWidth( 0, Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "xxxx" ) ) ); setColumnWidth( 1, Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "xxxx" ) ) ); +#else + setColumnWidth( 0, Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'x' ) * 4 ); + setColumnWidth( 1, Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'x' ) * 4 ); +#endif header()->setSectionsMovable( false ); connect( selectionModel(), &QItemSelectionModel::currentChanged, mModel, &QgsLayoutItemsListViewModel::setSelected ); diff --git a/src/gui/qgscolorschemelist.cpp b/src/gui/qgscolorschemelist.cpp index e6d7f75cba47..408ff0fecd57 100644 --- a/src/gui/qgscolorschemelist.cpp +++ b/src/gui/qgscolorschemelist.cpp @@ -710,7 +710,12 @@ void QgsColorSwatchDelegate::paint( QPainter *painter, const QStyleOptionViewIte } QRect rect = option.rect; +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) const int iconSize = Qgis::UI_SCALE_FACTOR * option.fontMetrics.width( 'X' ) * 4; +#else + const int iconSize = Qgis::UI_SCALE_FACTOR * option.fontMetrics.horizontalAdvance( 'X' ) * 4; +#endif + const int cornerSize = iconSize / 6; //center it rect.setLeft( option.rect.center().x() - iconSize / 2 ); @@ -749,7 +754,11 @@ QSize QgsColorSwatchDelegate::sizeHint( const QStyleOptionViewItem &option, cons { Q_UNUSED( index ) +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) const int iconSize = Qgis::UI_SCALE_FACTOR * option.fontMetrics.width( 'X' ) * 4; +#else + const int iconSize = Qgis::UI_SCALE_FACTOR * option.fontMetrics.horizontalAdvance( 'X' ) * 4; +#endif return QSize( iconSize, iconSize * 32 / 30.0 ); } diff --git a/src/gui/qgscolorwidgets.cpp b/src/gui/qgscolorwidgets.cpp index 56cb923823d6..6bb0355e7245 100644 --- a/src/gui/qgscolorwidgets.cpp +++ b/src/gui/qgscolorwidgets.cpp @@ -392,7 +392,11 @@ QgsColorWheel::~QgsColorWheel() QSize QgsColorWheel::sizeHint() const { +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) int size = Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "XXXXXXXXXXXXXXXXXXXXXX" ) ); +#else + int size = Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 22; +#endif return QSize( size, size ); } @@ -750,7 +754,11 @@ QgsColorBox::~QgsColorBox() QSize QgsColorBox::sizeHint() const { +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) int size = Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "XXXXXXXXXXXXXXXXXXXXXX" ) ); +#else + int size = Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 22; +#endif return QSize( size, size ); } @@ -981,12 +989,20 @@ QSize QgsColorRampWidget::sizeHint() const if ( mOrientation == QgsColorRampWidget::Horizontal ) { //horizontal +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) return QSize( Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "XXXXXXXXXXXXXXXXXXXXXX" ) ), Qgis::UI_SCALE_FACTOR * fontMetrics().height() * 1.3 ); +#else + return QSize( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 22, Qgis::UI_SCALE_FACTOR * fontMetrics().height() * 1.3 ); +#endif } else { //vertical +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) return QSize( Qgis::UI_SCALE_FACTOR * fontMetrics().height() * 1.3, Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "XXXXXXXXXXXXXXXXXXXXXX" ) ) ); +#else + return QSize( Qgis::UI_SCALE_FACTOR * fontMetrics().height() * 1.3, Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 22 ); +#endif } } @@ -1277,7 +1293,11 @@ QgsColorSliderWidget::QgsColorSliderWidget( QWidget *parent, const ColorComponen mSpinBox = new QSpinBox(); //set spinbox to a reasonable width +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) int largestCharWidth = mSpinBox->fontMetrics().width( QStringLiteral( "888%" ) ); +#else + int largestCharWidth = mSpinBox->fontMetrics().horizontalAdvance( QStringLiteral( "888%" ) ); +#endif mSpinBox->setMinimumWidth( largestCharWidth + 35 ); mSpinBox->setMinimum( 0 ); mSpinBox->setMaximum( convertRealToDisplay( componentRange() ) ); @@ -1588,7 +1608,11 @@ void QgsColorPreviewWidget::paintEvent( QPaintEvent *event ) QSize QgsColorPreviewWidget::sizeHint() const { +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) return QSize( Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "XXXXXXXXXXXXXXXXXXXXXX" ) ), Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral( "XXXXXXXXXXXXXXXXXXXXXX" ) ) * 0.75 ); +#else + return QSize( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 22, Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 22 * 0.75 ); +#endif } void QgsColorPreviewWidget::setColor2( const QColor &color ) diff --git a/src/gui/qgscompoundcolorwidget.cpp b/src/gui/qgscompoundcolorwidget.cpp index 33632dedd939..0307ec4bf67a 100644 --- a/src/gui/qgscompoundcolorwidget.cpp +++ b/src/gui/qgscompoundcolorwidget.cpp @@ -65,7 +65,12 @@ QgsCompoundColorWidget::QgsCompoundColorWidget( QWidget *parent, const QColor &c QgsSettings settings; mSchemeList->header()->hide(); +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) mSchemeList->setColumnWidth( 0, static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().width( 'X' ) * 6 ) ); +#else + mSchemeList->setColumnWidth( 0, static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 6 ) ); +#endif + //get schemes with ShowInColorDialog set refreshSchemeComboBox(); diff --git a/src/gui/qgsdetaileditemdelegate.cpp b/src/gui/qgsdetaileditemdelegate.cpp index 9c332e01fe8a..223f420b2f9b 100644 --- a/src/gui/qgsdetaileditemdelegate.cpp +++ b/src/gui/qgsdetaileditemdelegate.cpp @@ -253,7 +253,7 @@ void QgsDetailedItemDelegate::paintAsWidget( QPainter *thepPainter, { drawHighlight( option, thepPainter, height( option, data ) ); } - QPixmap myPixmap = QPixmap::grabWidget( mpWidget ); + QPixmap myPixmap = mpWidget->grab(); thepPainter->drawPixmap( option.rect.x(), option.rect.y(), myPixmap ); @@ -348,7 +348,7 @@ QStringList QgsDetailedItemDelegate::wordWrap( const QString &string, myPreviousSpacePos = i; } myCumulativeLine += myChar; - if ( metrics.width( myCumulativeLine ) >= width ) + if ( metrics.boundingRect( myCumulativeLine ).width() >= width ) { //time to wrap //TODO deal with long strings that have no spaces diff --git a/src/gui/qgsfieldexpressionwidget.cpp b/src/gui/qgsfieldexpressionwidget.cpp index 3ca57b3f5ac7..eb5955de5009 100644 --- a/src/gui/qgsfieldexpressionwidget.cpp +++ b/src/gui/qgsfieldexpressionwidget.cpp @@ -323,7 +323,7 @@ void QgsFieldExpressionWidget::currentFieldChanged() // display tooltip if widget is shorter than expression QFontMetrics metrics( mCombo->lineEdit()->font() ); - if ( metrics.width( fieldName ) > mCombo->lineEdit()->width() ) + if ( metrics.boundingRect( fieldName ).width() > mCombo->lineEdit()->width() ) { mCombo->setToolTip( fieldName ); } diff --git a/src/gui/qgsfontbutton.cpp b/src/gui/qgsfontbutton.cpp index 2018fe20f2bf..1bcbfaf0bfbb 100644 --- a/src/gui/qgsfontbutton.cpp +++ b/src/gui/qgsfontbutton.cpp @@ -53,7 +53,11 @@ QgsFontButton::QgsFontButton( QWidget *parent, const QString &dialogTitle ) //make sure height of button looks good under different platforms QSize size = QToolButton::minimumSizeHint(); int fontHeight = Qgis::UI_SCALE_FACTOR * fontMetrics().height() * 1.4; +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) int minWidth = Qgis::UI_SCALE_FACTOR * fontMetrics().width( 'X' ) * 20; +#else + int minWidth = Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 20; +#endif mSizeHint = QSize( std::max( minWidth, size.width() ), std::max( size.height(), fontHeight ) ); } diff --git a/src/gui/qgsratiolockbutton.cpp b/src/gui/qgsratiolockbutton.cpp index 9dbd15aa5b8d..906fce1f662f 100644 --- a/src/gui/qgsratiolockbutton.cpp +++ b/src/gui/qgsratiolockbutton.cpp @@ -27,7 +27,11 @@ QgsRatioLockButton::QgsRatioLockButton( QWidget *parent ) : QToolButton( parent ) { setMinimumSize( QSize( 24, 24 ) ); +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) setMaximumWidth( fontMetrics().width( QStringLiteral( "000" ) ) ); +#else + setMaximumWidth( fontMetrics().horizontalAdvance( '0' ) * 3 ); +#endif setCheckable( true ); setAutoRaise( true ); connect( this, &QPushButton::clicked, this, &QgsRatioLockButton::buttonClicked ); diff --git a/src/gui/raster/qgsrasterlayerproperties.cpp b/src/gui/raster/qgsrasterlayerproperties.cpp index d966ca954ac6..dca8f84c7e25 100644 --- a/src/gui/raster/qgsrasterlayerproperties.cpp +++ b/src/gui/raster/qgsrasterlayerproperties.cpp @@ -76,6 +76,7 @@ #include #include #include +#include QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer *lyr, QgsMapCanvas *canvas, QWidget *parent, Qt::WindowFlags fl ) : QgsOptionsDialogBase( QStringLiteral( "RasterLayerProperties" ), parent, fl ) @@ -440,7 +441,14 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer *lyr, QgsMapCanv #ifdef WITH_QTWEBKIT // Setup information tab + +#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) const int horizontalDpi = qApp->desktop()->screen()->logicalDpiX(); +#else + QScreen *screen = QGuiApplication::screenAt( mapToGlobal( QPoint( width() / 2, 0 ) ) ); + const int horizontalDpi = screen->logicalDotsPerInchX(); +#endif + // Adjust zoom: text is ok, but HTML seems rather big at least on Linux/KDE if ( horizontalDpi > 96 ) {