Ich hatte früher eine Schriftart mit gleicher Breite und konnte so QStrings schön formatieren.
Schön formatieren heißt
2x QString
1. QString max Länge 30 Zeichen, größer abschneiden, kleiner auffüllen mit ' '
2. QString max Länge 10 Zeichen, -,,-
und dann den 2ten an den 1ten anhängen.
So das war ja alles kein problem, da jedes Zeichen gleich groß. Nun das Problem das in Arial jedes Zeichen verschiedene Längen hat.
Ich habe versucht das folgendermaßen zu lösen.
Code: Alles auswählen
QFont font("Arial",12);
QFontMetrics fm(font);
int iSpaceWidth = fm.width(' '); // = 4
if(m_sName.size() <= (150) && m_sName.size() != (146))
{
int iNameWidth = fm.width(m_sName);
int iFactor = (NAME_WIDE-iNameWidth)/iSpaceWidth;
m_sName += QString(iFactor,' ');
//hier will er nicht mehr,
m_sName = fm.elidedText(m_sName,Qt::ElideLeft,150-iSpaceWidth); //bis 146 abschneiden
}
else if(m_sName.size() > NAME_WIDE)
{
//Text abschneiden bis Name_Wide
//m_sName = fm.elidedText(m_sName,Qt::ElideLeft,150-iSpaceWidth); //bis 146 abschneiden
}