Я хочу создать строку, которая будет напечатана на экране. Я буду обновлять эту строку каждый раз, когда значения печатаемых переменных будут меняться. Количество цифр в каждом номере может быть различным, и знак каждого номера может меняться со временем. То, что я хочу быть постоянным, это точность чисел. Вывод, который я ожидаю, выглядит следующим образом (каждая строка соответствует одной и той же строке, только обновлена):
X: 453.432 Y: 543.432
X: -5.432 Y: 4.432
X: 43.234 Y: -123.423
А именно, буквы и точка всегда должны оставаться на одном и том же месте на экране.
В данный момент я использую этот код для обновления строк, но положение Y и точек меняются, если меняется число цифр. Есть ли простой способ реализовать это?
text = QString("X: %1 Y: %2").arg( QString::number( x(), 'f', 3 ),
QString::number( y(), 'f', 3 ) );
------------------ РЕДАКТИРОВАТЬ ------------------
После ответа я создал строку с постоянным интервалом (фактически, с постоянной длиной). Хотя это не решило мою проблему полностью.
На следующем шаге я беру строку text
и, используя QPainter
, рисую ее на QImage
объекте. Проблема, с которой я здесь сталкиваюсь, заключается в том, что, хотя длина строки всегда одинакова, ширина чисел отличается от ширины пробелов ('') и знака '-', закрашенных QPainter
. Поэтому, когда количество цифр меняется, положение точек и символа Y также меняется.
Вот код, который я использую для создания изображения:
QImage img( 100, 100, QImage::Format_ARGB32_Premultiplied );
img.fill( Qt::transparent );
QPainter painter( &img );
QPen pen;
pen.setColor( Qt::darkBlue );
painter.setPen(pen);
QFont font = painter.font();
font.setBold( true );
font.setPointSize( 10 );
painter.setFont( font );
QString text = QString("X:%1 Y:%2")
.arg( x(), 9, 'f', 3, ' ' )
.arg( y(), 9, 'f', 3, ' ' );
painter.drawText( QPointF(0, 50), text );
painter.end();