qt: Add TextWidth() wrapper
In Qt 5.12 and before the QFontMetrics::width() is used and it is deprecated since Qt 13.0. In Qt 5.11 the QFontMetrics::horizontalAdvance() was introduced.
This commit is contained in:
parent
442a9c6477
commit
1260ecd812
6 changed files with 28 additions and 10 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <qt/bitcoinunits.h>
|
#include <qt/bitcoinunits.h>
|
||||||
#include <qt/guiconstants.h>
|
#include <qt/guiconstants.h>
|
||||||
|
#include <qt/guiutil.h>
|
||||||
#include <qt/qvaluecombobox.h>
|
#include <qt/qvaluecombobox.h>
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
@ -121,7 +122,7 @@ public:
|
||||||
|
|
||||||
const QFontMetrics fm(fontMetrics());
|
const QFontMetrics fm(fontMetrics());
|
||||||
int h = lineEdit()->minimumSizeHint().height();
|
int h = lineEdit()->minimumSizeHint().height();
|
||||||
int w = fm.width(BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
|
int w = GUIUtil::TextWidth(fm, BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
|
||||||
w += 2; // cursor blinking space
|
w += 2; // cursor blinking space
|
||||||
|
|
||||||
QStyleOptionSpinBox opt;
|
QStyleOptionSpinBox opt;
|
||||||
|
|
|
@ -1407,7 +1407,7 @@ UnitDisplayStatusBarControl::UnitDisplayStatusBarControl(const PlatformStyle *pl
|
||||||
const QFontMetrics fm(font());
|
const QFontMetrics fm(font());
|
||||||
for (const BitcoinUnits::Unit unit : units)
|
for (const BitcoinUnits::Unit unit : units)
|
||||||
{
|
{
|
||||||
max_width = qMax(max_width, fm.width(BitcoinUnits::longName(unit)));
|
max_width = qMax(max_width, GUIUtil::TextWidth(fm, BitcoinUnits::longName(unit)));
|
||||||
}
|
}
|
||||||
setMinimumSize(max_width, 0);
|
setMinimumSize(max_width, 0);
|
||||||
setAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
setAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
|
|
|
@ -916,7 +916,7 @@ qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal m
|
||||||
while(font_size >= minPointSize) {
|
while(font_size >= minPointSize) {
|
||||||
font.setPointSizeF(font_size);
|
font.setPointSizeF(font_size);
|
||||||
QFontMetrics fm(font);
|
QFontMetrics fm(font);
|
||||||
if (fm.width(text) < width) {
|
if (TextWidth(fm, text) < width) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
font_size -= 0.5;
|
font_size -= 0.5;
|
||||||
|
@ -956,4 +956,13 @@ void PolishProgressDialog(QProgressDialog* dialog)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TextWidth(const QFontMetrics& fm, const QString& text)
|
||||||
|
{
|
||||||
|
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
|
||||||
|
return fm.horizontalAdvance(text);
|
||||||
|
#else
|
||||||
|
return fm.width(text);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace GUIUtil
|
} // namespace GUIUtil
|
||||||
|
|
|
@ -257,6 +257,14 @@ namespace GUIUtil
|
||||||
|
|
||||||
// Fix known bugs in QProgressDialog class.
|
// Fix known bugs in QProgressDialog class.
|
||||||
void PolishProgressDialog(QProgressDialog* dialog);
|
void PolishProgressDialog(QProgressDialog* dialog);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the distance in pixels appropriate for drawing a subsequent character after text.
|
||||||
|
*
|
||||||
|
* In Qt 5.12 and before the QFontMetrics::width() is used and it is deprecated since Qt 13.0.
|
||||||
|
* In Qt 5.11 the QFontMetrics::horizontalAdvance() was introduced.
|
||||||
|
*/
|
||||||
|
int TextWidth(const QFontMetrics& fm, const QString& text);
|
||||||
} // namespace GUIUtil
|
} // namespace GUIUtil
|
||||||
|
|
||||||
#endif // BITCOIN_QT_GUIUTIL_H
|
#endif // BITCOIN_QT_GUIUTIL_H
|
||||||
|
|
|
@ -703,7 +703,7 @@ void SendCoinsDialog::updateSmartFeeLabel()
|
||||||
int lightness = ui->fallbackFeeWarningLabel->palette().color(QPalette::WindowText).lightness();
|
int lightness = ui->fallbackFeeWarningLabel->palette().color(QPalette::WindowText).lightness();
|
||||||
QColor warning_colour(255 - (lightness / 5), 176 - (lightness / 3), 48 - (lightness / 14));
|
QColor warning_colour(255 - (lightness / 5), 176 - (lightness / 3), 48 - (lightness / 14));
|
||||||
ui->fallbackFeeWarningLabel->setStyleSheet("QLabel { color: " + warning_colour.name() + "; }");
|
ui->fallbackFeeWarningLabel->setStyleSheet("QLabel { color: " + warning_colour.name() + "; }");
|
||||||
ui->fallbackFeeWarningLabel->setIndent(QFontMetrics(ui->fallbackFeeWarningLabel->font()).width("x"));
|
ui->fallbackFeeWarningLabel->setIndent(GUIUtil::TextWidth(QFontMetrics(ui->fallbackFeeWarningLabel->font()), "x"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
|
|
||||||
#include <qt/splashscreen.h>
|
#include <qt/splashscreen.h>
|
||||||
|
|
||||||
#include <qt/networkstyle.h>
|
|
||||||
|
|
||||||
#include <clientversion.h>
|
#include <clientversion.h>
|
||||||
#include <interfaces/handler.h>
|
#include <interfaces/handler.h>
|
||||||
#include <interfaces/node.h>
|
#include <interfaces/node.h>
|
||||||
#include <interfaces/wallet.h>
|
#include <interfaces/wallet.h>
|
||||||
|
#include <qt/guiutil.h>
|
||||||
|
#include <qt/networkstyle.h>
|
||||||
#include <ui_interface.h>
|
#include <ui_interface.h>
|
||||||
#include <util/system.h>
|
#include <util/system.h>
|
||||||
#include <util/translation.h>
|
#include <util/translation.h>
|
||||||
|
@ -75,21 +75,21 @@ SplashScreen::SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const Netw
|
||||||
// check font size and drawing with
|
// check font size and drawing with
|
||||||
pixPaint.setFont(QFont(font, 33*fontFactor));
|
pixPaint.setFont(QFont(font, 33*fontFactor));
|
||||||
QFontMetrics fm = pixPaint.fontMetrics();
|
QFontMetrics fm = pixPaint.fontMetrics();
|
||||||
int titleTextWidth = fm.width(titleText);
|
int titleTextWidth = GUIUtil::TextWidth(fm, titleText);
|
||||||
if (titleTextWidth > 176) {
|
if (titleTextWidth > 176) {
|
||||||
fontFactor = fontFactor * 176 / titleTextWidth;
|
fontFactor = fontFactor * 176 / titleTextWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixPaint.setFont(QFont(font, 33*fontFactor));
|
pixPaint.setFont(QFont(font, 33*fontFactor));
|
||||||
fm = pixPaint.fontMetrics();
|
fm = pixPaint.fontMetrics();
|
||||||
titleTextWidth = fm.width(titleText);
|
titleTextWidth = GUIUtil::TextWidth(fm, titleText);
|
||||||
pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText);
|
pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText);
|
||||||
|
|
||||||
pixPaint.setFont(QFont(font, 15*fontFactor));
|
pixPaint.setFont(QFont(font, 15*fontFactor));
|
||||||
|
|
||||||
// if the version string is too long, reduce size
|
// if the version string is too long, reduce size
|
||||||
fm = pixPaint.fontMetrics();
|
fm = pixPaint.fontMetrics();
|
||||||
int versionTextWidth = fm.width(versionText);
|
int versionTextWidth = GUIUtil::TextWidth(fm, versionText);
|
||||||
if(versionTextWidth > titleTextWidth+paddingRight-10) {
|
if(versionTextWidth > titleTextWidth+paddingRight-10) {
|
||||||
pixPaint.setFont(QFont(font, 10*fontFactor));
|
pixPaint.setFont(QFont(font, 10*fontFactor));
|
||||||
titleVersionVSpace -= 5;
|
titleVersionVSpace -= 5;
|
||||||
|
@ -111,7 +111,7 @@ SplashScreen::SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const Netw
|
||||||
boldFont.setWeight(QFont::Bold);
|
boldFont.setWeight(QFont::Bold);
|
||||||
pixPaint.setFont(boldFont);
|
pixPaint.setFont(boldFont);
|
||||||
fm = pixPaint.fontMetrics();
|
fm = pixPaint.fontMetrics();
|
||||||
int titleAddTextWidth = fm.width(titleAddText);
|
int titleAddTextWidth = GUIUtil::TextWidth(fm, titleAddText);
|
||||||
pixPaint.drawText(pixmap.width()/devicePixelRatio-titleAddTextWidth-10,15,titleAddText);
|
pixPaint.drawText(pixmap.width()/devicePixelRatio-titleAddTextWidth-10,15,titleAddText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue