2016-05-03 16 views
0

Gibt es eine Möglichkeit, Zeilenumbrüche im Text einer QMessageBox auf <br> zu beschränken? I.e. keine Auto-Linebreaks irgendwo anders? So etwas wie msgBox.setAutoLinebreaks(False) wäre schön ...QMessageBox Auto-Zeilenumbrüche vermeiden

+0

Eine Nachrichtenbox sollte wahrscheinlich Zeilen unterbrechen, wenn der Text das Ende der Box erreicht, wenn nicht, werden sie außerhalb der Box überlaufen. Docs sagt, dass "Der Text wird als ein einfacher Text interpretiert werden.", IE, '
' sollte als "
" gedruckt werden, und Ihre eigenen Pausen sollten wahrscheinlich "\ n" statt "
" sein. – Jite

+0

Das 'textFormat' ist standardmäßig auf AutoText eingestellt und interpretiert '
' als Zeilenumbrüche (sollte nicht mit '\ n' gemischt werden!). Das funktioniert gut, aber die Breite der 'QMessageBox' sollte einstellbar sein oder ist das sowieso behoben? –

Antwort

1

Wenn Sie wirklich wollen, können Sie diesen schmutzigen Hack verwenden, es zu tun:

QMessageBox msgBox; 
QString loremIpsum = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo."; 
loremIpsum.replace(" ", "&nbsp;"); 
msgBox.setText(loremIpsum); 
msgBox.setTextFormat(Qt::RichText); 
msgBox.exec(); 

Aber die Größe des Nachrichtenfelds ist nach wie vor durch eine interne Logik beschränkt, Es wird also einfach nicht den Rest der Zeile anzeigen, wenn es nicht passt. Auf meinem System ist dies bei "ab ill" abgeschnitten. Beachten Sie, dass der automatische Unterbrechungsalgorithmus nicht nur bei Leerzeichen (nicht sicher darüber) unterbrochen werden kann, sodass Sie möglicherweise nichtbrechende Bindestriche oder etwas mehr verwenden müssen. Ich würde es nicht wagen, dies als generische Lösung zu verwenden, aber es könnte für einen bestimmten Fall verwendet werden.