|
9 | 9 | #include <QApplication>
|
10 | 10 | #include <QClipboard>
|
11 | 11 | #include <QDrag>
|
| 12 | +#include <QFontDatabase> |
12 | 13 | #include <QMenu>
|
13 | 14 | #include <QMimeData>
|
14 | 15 | #include <QMouseEvent>
|
@@ -64,24 +65,25 @@ bool QRImageWidget::setQR(const QString& data, const QString& text)
|
64 | 65 | }
|
65 | 66 | QRcode_free(code);
|
66 | 67 |
|
67 |
| - QImage qrAddrImage = QImage(QR_IMAGE_SIZE, QR_IMAGE_SIZE + (text.isEmpty() ? 0 : 20), QImage::Format_RGB32); |
| 68 | + const int qr_image_size = QR_IMAGE_SIZE + (text.isEmpty() ? 0 : 2 * QR_IMAGE_MARGIN); |
| 69 | + QImage qrAddrImage(qr_image_size, qr_image_size, QImage::Format_RGB32); |
68 | 70 | qrAddrImage.fill(0xffffff);
|
69 | 71 | {
|
70 | 72 | QPainter painter(&qrAddrImage);
|
71 |
| - painter.drawImage(0, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE)); |
| 73 | + painter.drawImage(QR_IMAGE_MARGIN, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE)); |
72 | 74 |
|
73 | 75 | if (!text.isEmpty()) {
|
74 |
| - QFont font = GUIUtil::fixedPitchFont(); |
75 |
| - font.setStyleStrategy(QFont::NoAntialias); |
76 | 76 | QRect paddedRect = qrAddrImage.rect();
|
| 77 | + paddedRect.setHeight(QR_IMAGE_SIZE + QR_IMAGE_TEXT_MARGIN); |
77 | 78 |
|
78 |
| - // calculate ideal font size |
79 |
| - qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 20, text, font); |
| 79 | + QFont font = QFontDatabase::systemFont(QFontDatabase::GeneralFont); |
| 80 | + font.setStretch(QFont::SemiCondensed); |
| 81 | + font.setLetterSpacing(QFont::AbsoluteSpacing, 1); |
| 82 | + const qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 2 * QR_IMAGE_TEXT_MARGIN, text, font); |
80 | 83 | font.setPointSizeF(font_size);
|
81 | 84 |
|
82 | 85 | painter.setFont(font);
|
83 |
| - paddedRect.setHeight(QR_IMAGE_SIZE+12); |
84 |
| - painter.drawText(paddedRect, Qt::AlignBottom|Qt::AlignCenter, text); |
| 86 | + painter.drawText(paddedRect, Qt::AlignBottom | Qt::AlignCenter, text); |
85 | 87 | }
|
86 | 88 | }
|
87 | 89 |
|
|
0 commit comments