From 1ee3d79d7cc61a4983e55ed39b56ebdb260f9980 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 10 Jun 2020 12:27:50 +0200 Subject: [PATCH] Qt5: 'int QFontMetrics::width' is deprecated since Qt 5.11: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations] --- src/Gui/CommandView.cpp | 6 ++- src/Gui/DlgExpressionInput.cpp | 3 +- src/Gui/DownloadItem.cpp | 3 +- src/Gui/FileDialog.cpp | 5 +- src/Gui/MainWindow.cpp | 5 +- src/Gui/ManualAlignment.cpp | 3 +- src/Gui/PythonConsole.cpp | 3 +- src/Gui/QuantitySpinBox.cpp | 5 +- src/Gui/ReportView.cpp | 3 +- src/Gui/SoTextLabel.cpp | 3 +- src/Gui/TextEdit.cpp | 5 +- src/Gui/Tools.h | 54 +++++++++++++++++++ src/Gui/ViewProviderAnnotation.cpp | 3 +- src/Gui/Widgets.cpp | 7 +-- src/Gui/iisTaskPanel/src/iisiconlabel.cpp | 4 ++ src/Mod/Part/Gui/TaskFaceColors.cpp | 3 +- .../PartDesign/Gui/TaskChamferParameters.cpp | 9 ++-- src/Mod/Sketcher/Gui/SoDatumLabel.cpp | 3 +- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 3 +- src/Mod/TechDraw/Gui/QGIView.cpp | 3 +- src/Mod/TechDraw/Gui/QGIViewBalloon.cpp | 3 +- 21 files changed, 107 insertions(+), 29 deletions(-) create mode 100644 src/Gui/Tools.h diff --git a/src/Gui/CommandView.cpp b/src/Gui/CommandView.cpp index b9327c41fb..47ead58c8d 100644 --- a/src/Gui/CommandView.cpp +++ b/src/Gui/CommandView.cpp @@ -70,6 +70,7 @@ #include "SceneInspector.h" #include "DemoMode.h" #include "TextureMapping.h" +#include "Tools.h" #include "Utilities.h" #include "NavigationStyle.h" @@ -1862,14 +1863,15 @@ void StdViewScreenShot::activated(int iMsg) QFont font = painter.font(); font.setPointSize(20); - int n = QFontMetrics(font).width(name); + QFontMetrics fm(font); + int n = QtTools::horizontalAdvance(fm, name); int h = pixmap.height(); painter.setFont(font); painter.drawText(8+appicon.width(), h-24, name); font.setPointSize(12); - int u = QFontMetrics(font).width(url); + int u = QtTools::horizontalAdvance(fm, url); painter.setFont(font); painter.drawText(8+appicon.width()+n-u, h-9, url); diff --git a/src/Gui/DlgExpressionInput.cpp b/src/Gui/DlgExpressionInput.cpp index 2c64c46e6b..6f7c299bc7 100644 --- a/src/Gui/DlgExpressionInput.cpp +++ b/src/Gui/DlgExpressionInput.cpp @@ -30,6 +30,7 @@ #include "DlgExpressionInput.h" #include "ui_DlgExpressionInput.h" #include "ExpressionCompleter.h" +#include "Tools.h" #include #include #include @@ -124,7 +125,7 @@ void DlgExpressionInput::textChanged(const QString &text) try { //resize the input field according to text size QFontMetrics fm(ui->expression->font()); - int width = fm.width(text) + 15; + int width = QtTools::horizontalAdvance(fm, text) + 15; if (width < minimumWidth) ui->expression->setMinimumWidth(minimumWidth); else diff --git a/src/Gui/DownloadItem.cpp b/src/Gui/DownloadItem.cpp index b882df8e81..04cbbaa350 100644 --- a/src/Gui/DownloadItem.cpp +++ b/src/Gui/DownloadItem.cpp @@ -53,6 +53,7 @@ #include "MainWindow.h" #include "FileDialog.h" #include "ui_DlgAuthorization.h" +#include "Tools.h" using namespace Gui::Dialog; @@ -100,7 +101,7 @@ SqueezeLabel::SqueezeLabel(QWidget *parent) : QLabel(parent) void SqueezeLabel::paintEvent(QPaintEvent *event) { QFontMetrics fm = fontMetrics(); - if (fm.width(text()) > contentsRect().width()) { + if (Gui::QtTools::horizontalAdvance(fm, text()) > contentsRect().width()) { QString elided = fm.elidedText(text(), Qt::ElideMiddle, width()); QString oldText = text(); setText(elided); diff --git a/src/Gui/FileDialog.cpp b/src/Gui/FileDialog.cpp index 7a982f4587..55377bdaad 100644 --- a/src/Gui/FileDialog.cpp +++ b/src/Gui/FileDialog.cpp @@ -45,6 +45,7 @@ #include "FileDialog.h" #include "MainWindow.h" #include "BitmapFactory.h" +#include "Tools.h" using namespace Gui; @@ -779,8 +780,8 @@ void FileChooser::setFilter ( const QString& filter ) void FileChooser::setButtonText( const QString& txt ) { button->setText( txt ); - int w1 = 2*button->fontMetrics().width(txt); - int w2 = 2*button->fontMetrics().width(QLatin1String(" ... ")); + int w1 = 2 * QtTools::horizontalAdvance(button->fontMetrics(), txt); + int w2 = 2 * QtTools::horizontalAdvance(button->fontMetrics(), QLatin1String(" ... ")); button->setFixedWidth( (w1 > w2 ? w1 : w2) ); } diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index bf89926d0b..d463acd077 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -116,6 +116,7 @@ #include "View3DInventor.h" #include "View3DInventorViewer.h" #include "DlgObjectSelection.h" +#include "Tools.h" FC_LOG_LEVEL_INIT("MainWindow",false,true,true) @@ -1547,14 +1548,14 @@ QPixmap MainWindow::splashImage() const QFont fontExe = painter.font(); fontExe.setPointSize(20); QFontMetrics metricExe(fontExe); - int l = metricExe.width(title); + int l = QtTools::horizontalAdvance(metricExe, title); int w = splash_image.width(); int h = splash_image.height(); QFont fontVer = painter.font(); fontVer.setPointSize(12); QFontMetrics metricVer(fontVer); - int v = metricVer.width(version); + int v = QtTools::horizontalAdvance(metricVer, version); int x = -1, y = -1; QRegExp rx(QLatin1String("(\\d+).(\\d+)")); diff --git a/src/Gui/ManualAlignment.cpp b/src/Gui/ManualAlignment.cpp index 2deb44e8c3..d3e2c7aa73 100644 --- a/src/Gui/ManualAlignment.cpp +++ b/src/Gui/ManualAlignment.cpp @@ -67,6 +67,7 @@ #include "ManualAlignment.h" #include "BitmapFactory.h" #include "SoAxisCrossKit.h" +#include "Tools.h" using namespace Gui; @@ -472,7 +473,7 @@ public: QColor front; front.setRgbF(0.8f, 0.8f, 0.8f); - int w = fm.width(text); + int w = QtTools::horizontalAdvance(fm, text); int h = fm.height(); QImage image(w,h,QImage::Format_ARGB32_Premultiplied); diff --git a/src/Gui/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index e866055a76..18794e028f 100644 --- a/src/Gui/PythonConsole.cpp +++ b/src/Gui/PythonConsole.cpp @@ -49,6 +49,7 @@ #include "DlgEditorImp.h" #include "FileDialog.h" #include "MainWindow.h" +#include "Tools.h" #include #include @@ -524,7 +525,7 @@ void PythonConsole::OnChange( Base::Subject &rCaller,const char* sR QFont font(fontFamily, fontSize); setFont(font); QFontMetrics metric(font); - int width = metric.width(QLatin1String("0000")); + int width = QtTools::horizontalAdvance(metric, QLatin1String("0000")); setTabStopWidth(width); } else { QMap::ConstIterator it = d->colormap.find(QString::fromLatin1(sReason)); diff --git a/src/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index 36a9e03da4..5708d4d0dd 100644 --- a/src/Gui/QuantitySpinBox.cpp +++ b/src/Gui/QuantitySpinBox.cpp @@ -41,6 +41,7 @@ #include "DlgExpressionInput.h" #include "propertyeditor/PropertyItem.h" #include "BitmapFactory.h" +#include "Tools.h" #include "Command.h" #include #include @@ -830,7 +831,7 @@ QSize QuantitySpinBox::sizeHint() const s = textFromValue(q); s.truncate(18); s += fixedContent; - w = qMax(w, fm.width(s)); + w = qMax(w, QtTools::horizontalAdvance(fm, s)); w += 2; // cursor blinking space w += iconHeight; @@ -860,7 +861,7 @@ QSize QuantitySpinBox::minimumSizeHint() const s = textFromValue(q); s.truncate(18); s += fixedContent; - w = qMax(w, fm.width(s)); + w = qMax(w, QtTools::horizontalAdvance(fm, s)); w += 2; // cursor blinking space w += iconHeight; diff --git a/src/Gui/ReportView.cpp b/src/Gui/ReportView.cpp index 207074f782..b9b4eaf23a 100644 --- a/src/Gui/ReportView.cpp +++ b/src/Gui/ReportView.cpp @@ -41,6 +41,7 @@ #include "BitmapFactory.h" #include "MainWindow.h" #include "Application.h" +#include "Tools.h" using namespace Gui; using namespace Gui::DockWnd; @@ -653,7 +654,7 @@ void ReportOutput::OnChange(Base::Subject &rCaller, const char * sR QFont font(fontFamily, fontSize); setFont(font); QFontMetrics metric(font); - int width = metric.width(QLatin1String("0000")); + int width = QtTools::horizontalAdvance(metric, QLatin1String("0000")); setTabStopWidth(width); } else if (strcmp(sReason, "RedirectPythonOutput") == 0) { diff --git a/src/Gui/SoTextLabel.cpp b/src/Gui/SoTextLabel.cpp index ca562d19d2..8d254342d3 100644 --- a/src/Gui/SoTextLabel.cpp +++ b/src/Gui/SoTextLabel.cpp @@ -65,6 +65,7 @@ #include "SoTextLabel.h" #include "SoFCInteractiveElement.h" #include "BitmapFactory.h" +#include "Tools.h" using namespace Gui; @@ -452,7 +453,7 @@ void SoFrameLabel::drawImage() QStringList lines; for (int i=0; i(w, fm.width(line)); + w = std::max(w, QtTools::horizontalAdvance(fm, line)); lines << line; } diff --git a/src/Gui/TextEdit.cpp b/src/Gui/TextEdit.cpp index f9f4cc7116..c890fdc252 100644 --- a/src/Gui/TextEdit.cpp +++ b/src/Gui/TextEdit.cpp @@ -32,6 +32,7 @@ #include "TextEdit.h" #include "SyntaxHighlighter.h" +#include "Tools.h" using namespace Gui; @@ -239,7 +240,7 @@ TextEditor::~TextEditor() int TextEditor::lineNumberAreaWidth() { - return fontMetrics().width(QLatin1String("0000"))+10; + return QtTools::horizontalAdvance(fontMetrics(), QLatin1String("0000")) + 10; } void TextEditor::updateLineNumberAreaWidth(int /* newBlockCount */) @@ -449,7 +450,7 @@ void TextEditor::OnChange(Base::Subject &rCaller,const char* sReaso if (strcmp(sReason, "TabSize") == 0 || strcmp(sReason, "FontSize") == 0) { int tabWidth = hPrefGrp->GetInt("TabSize", 4); QFontMetrics metric(font()); - int fontSize = metric.width(QLatin1String("0")); + int fontSize = QtTools::horizontalAdvance(metric, QLatin1Char('0')); setTabStopWidth(tabWidth * fontSize); } diff --git a/src/Gui/Tools.h b/src/Gui/Tools.h new file mode 100644 index 0000000000..f09d11cbd3 --- /dev/null +++ b/src/Gui/Tools.h @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (c) 2020 Werner Mayer * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#ifndef GUI_TOOLS_H +#define GUI_TOOLS_H + +#include + +namespace Gui { + +/*! + * \brief The QtTools class + * Helper class to reduce adding a lot of extra QT_VERSION checks to client code. + */ +class GuiExport QtTools { +public: + static int horizontalAdvance(const QFontMetrics& fm, QChar ch) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) + return fm.horizontalAdvance(ch); +#else + return fm.width(ch); +#endif + } + static int horizontalAdvance(const QFontMetrics& fm, const QString& text, int len = -1) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) + return fm.horizontalAdvance(text, len); +#else + return fm.width(text, len); +#endif + } +}; + +} // namespace Gui + +#endif // GUI_TOOLS_H diff --git a/src/Gui/ViewProviderAnnotation.cpp b/src/Gui/ViewProviderAnnotation.cpp index 3c08140865..7859dc7c37 100644 --- a/src/Gui/ViewProviderAnnotation.cpp +++ b/src/Gui/ViewProviderAnnotation.cpp @@ -58,6 +58,7 @@ #include "Application.h" #include "Document.h" #include "Window.h" +#include "Tools.h" using namespace Gui; @@ -493,7 +494,7 @@ void ViewProviderAnnotationLabel::drawImage(const std::vector& s) QStringList lines; for (std::vector::const_iterator it = s.begin(); it != s.end(); ++it) { QString line = QString::fromUtf8(it->c_str()); - w = std::max(w, fm.width(line)); + w = std::max(w, QtTools::horizontalAdvance(fm, line)); lines << line; } diff --git a/src/Gui/Widgets.cpp b/src/Gui/Widgets.cpp index 158766e2e3..83a24b9875 100644 --- a/src/Gui/Widgets.cpp +++ b/src/Gui/Widgets.cpp @@ -54,6 +54,7 @@ #include "BitmapFactory.h" #include "DlgExpressionInput.h" #include "QuantitySpinBox_p.h" +#include "Tools.h" using namespace Gui; using namespace App; @@ -1191,7 +1192,7 @@ int PropertyListEditor::lineNumberAreaWidth() ++digits; } - int space = 3 + fontMetrics().width(QLatin1Char('9')) * digits; + int space = 3 + QtTools::horizontalAdvance(fontMetrics(), QLatin1Char('9')) * digits; return space; } @@ -1398,8 +1399,8 @@ void LabelEditor::validateText(const QString& text) void LabelEditor::setButtonText(const QString& txt) { button->setText(txt); - int w1 = 2*button->fontMetrics().width(txt); - int w2 = 2*button->fontMetrics().width(QLatin1String(" ... ")); + int w1 = 2 * QtTools::horizontalAdvance(button->fontMetrics(), txt); + int w2 = 2 * QtTools::horizontalAdvance(button->fontMetrics(), QLatin1String(" ... ")); button->setFixedWidth((w1 > w2 ? w1 : w2)); } diff --git a/src/Gui/iisTaskPanel/src/iisiconlabel.cpp b/src/Gui/iisTaskPanel/src/iisiconlabel.cpp index f967eacc38..e80ec302f1 100644 --- a/src/Gui/iisTaskPanel/src/iisiconlabel.cpp +++ b/src/Gui/iisTaskPanel/src/iisiconlabel.cpp @@ -74,7 +74,11 @@ QSize iisIconLabel::minimumSizeHint() const int w = 8 + px.width(); if (!myText.isEmpty()) { QFontMetrics fm(myFont); +#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) + w += fm.horizontalAdvance(myText); +#else w += fm.width(myText); +#endif h = qMax(h, 4+fm.height()); } diff --git a/src/Mod/Part/Gui/TaskFaceColors.cpp b/src/Mod/Part/Gui/TaskFaceColors.cpp index 1549e3ba22..ffb9209a1a 100644 --- a/src/Mod/Part/Gui/TaskFaceColors.cpp +++ b/src/Mod/Part/Gui/TaskFaceColors.cpp @@ -61,6 +61,7 @@ #include #include #include +#include #include #include @@ -408,7 +409,7 @@ void FaceColors::updatePanel() int maxWidth = d->ui->labelElement->width(); QFontMetrics fm(d->ui->labelElement->font()); - if (fm.width(faces) > maxWidth) { + if (Gui::QtTools::horizontalAdvance(fm, faces) > maxWidth) { faces = fm.elidedText(faces, Qt::ElideMiddle, maxWidth); } diff --git a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp index f36cec8fa3..51413f3185 100644 --- a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -131,10 +132,10 @@ void TaskChamferParameters::setUpUI(PartDesign::Chamfer* pcChamfer) ui->stackedWidget->setFixedHeight(ui->chamferSize2->sizeHint().height()); QFontMetrics fm(ui->typeLabel->font()); - int minWidth = fm.width(ui->typeLabel->text()); - minWidth = std::max(minWidth, fm.width(ui->sizeLabel->text())); - minWidth = std::max(minWidth, fm.width(ui->size2Label->text())); - minWidth = std::max(minWidth, fm.width(ui->angleLabel->text())); + int minWidth = Gui::QtTools::horizontalAdvance(fm, ui->typeLabel->text()); + minWidth = std::max(minWidth, Gui::QtTools::horizontalAdvance(fm, ui->sizeLabel->text())); + minWidth = std::max(minWidth, Gui::QtTools::horizontalAdvance(fm, ui->size2Label->text())); + minWidth = std::max(minWidth, Gui::QtTools::horizontalAdvance(fm, ui->angleLabel->text())); minWidth = minWidth + 5; //spacing ui->typeLabel->setMinimumWidth(minWidth); ui->sizeLabel->setMinimumWidth(minWidth); diff --git a/src/Mod/Sketcher/Gui/SoDatumLabel.cpp b/src/Mod/Sketcher/Gui/SoDatumLabel.cpp index 76af0787e0..9d416f336a 100644 --- a/src/Mod/Sketcher/Gui/SoDatumLabel.cpp +++ b/src/Mod/Sketcher/Gui/SoDatumLabel.cpp @@ -56,6 +56,7 @@ #include "SoDatumLabel.h" #include +#include #define ZCONSTR 0.006f @@ -116,7 +117,7 @@ void SoDatumLabel::drawImage() QFontMetrics fm(font); QString str = QString::fromUtf8(s[0].getString()); - int w = fm.width(str); + int w = Gui::QtTools::horizontalAdvance(fm, str); int h = fm.height(); // No Valid text diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index dccd9f0f04..b76d21e619 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -94,6 +94,7 @@ #include #include #include +#include #include #include #include @@ -3471,7 +3472,7 @@ QImage ViewProviderSketch::renderConstrIcon(const QString &type, boundingBoxes->push_back(labelBB); } - cursorOffset += qfm.width(labelStr); + cursorOffset += Gui::QtTools::horizontalAdvance(qfm, labelStr); } } diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index d2fbe33a15..056ddf7953 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include "Rez.h" @@ -719,7 +720,7 @@ int QGIView::calculateFontPixelSize(double sizeInMillimetres) int QGIView::calculateFontPixelWidth(const QFont &font) { // Return the width of digit 0, most likely the most wide digit - return QFontMetrics(font).width(QChar::fromLatin1('0')); + return Gui::QtTools::horizontalAdvance(QFontMetrics(font), QChar::fromLatin1('0')); } const double QGIView::DefaultFontSizeInMM = 5.0; diff --git a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index d14fe4ad35..d18fb5b827 100644 --- a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -444,7 +445,7 @@ void QGIViewBalloon::updateBalloon(bool obtuse) int pos = labelText.indexOf(QString::fromUtf8("|")); labelText.replace(pos, 1, QString::fromUtf8(" ")); QFontMetrics fm(balloonLabel->getFont()); - balloonLabel->seps.push_back(fm.width((labelText.left(pos + 2)))); + balloonLabel->seps.push_back(Gui::QtTools::horizontalAdvance(fm, labelText.left(pos + 2))); balloonLabel->verticalSep = true; } }