> однако пробелы не перносятся
уточни проблему
opt.setWrapMode(QTextOption::WrapAnywhere); !!!
На картинках последовательный ресайз. Красным обведены 4 пробела.
1) Они не переносятся посимвольно
2) В этом режиме, при переносе, они не могут появится в начале строки, только после видимого символа(видно на ресайзе от 3 к 4)
C++ (Qt)
...
QFont font1 = font();
font1.setFamily(QString::fromUtf8("Courier New"));
setFont(font1);
...
...
...
QFontMetrics FM(font(), pixmap);
int TabWidth = FM.width('0')*8;
QRect r = rect();
QTextOption opt;
String text = "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\n\n 123\t1 23\t123\t123123456789 123456789 123456789\t123456789\t\t123456789\t\t\t\t123456789 123456789";
...
...
painter.begin(pixmap);
painter.fillRect(r, Qt::white);
painter.setPen(Qt::black);
painter.setFont(font());
opt.setAlignment(Qt::AlignLeft);
opt.setWrapMode(QTextOption::WrapAnywhere);
opt.setFlags(QTextOption::ShowTabsAndSpaces);
opt.setTabStop(TabWidth);
painter.drawText(r, text, opt);
r.setHeight(INT_MAX);
r = FM.boundingRect(r, Qt::TextExpandTabs|Qt::TextWrapAnywhere, text, TabWidth);
painter.drawRect(r);
painter.end();