#include #include #include #include #include class Widget : public QWidget { public: Widget(QFont font, qreal scale, QWidget *parent = nullptr) : QWidget(parent) , font(font) , scale(scale) { } protected: void paintEvent(QPaintEvent */*event*/) override { QPainter painter(this); painter.drawRect(rect().adjusted(0, 0, -1, -1)); painter.translate(100, height() / 2); painter.scale(scale, scale); painter.setFont(font); QStaticText staticText(QString{"%1% Text"}.arg(scale * 100)); // staticText.prepare({}, font); // Not affecting the bug painter.drawStaticText(0, 0, staticText); } private: QFont font; qreal scale; }; int main(int argc, char *argv[]) { QApplication a(argc, argv); auto *r = new QWidget; auto *l = new QGridLayout(r); QFont font{"Courier New", 36}; font.setStrikeOut(true); font.setUnderline(true); const int row = 3; const int col = 2; for (int i = 0; i < row * col; ++i) { auto w = new Widget(font, 0.25 * (i + 1)); l->addWidget(w, i % row, i / row); } r->setGeometry(0, 0, 800, 640); r->show(); return a.exec(); }