Seite 1 von 1

Zeilenumbruch in Msg-Box unterdrücken

Verfasst: 3. Januar 2011 14:50
von TK
Hallo zusammen!

Altes Thema, poppt aber immer wieder gerne auf. Habe den unten stehenden Code:

Code: Alles auswählen

                msg.setIcon(QMessageBox::Critical);
                msg.setText(QObject::tr("Syntaxfehler Dateiname!"));
                msg.setInformativeText("Beispiel-Dateiname der Firmware: Test.bin/axf");
                msg.setWindowFlags(Qt::SubWindow);
                msg.exec();
Mit \r\n kann ich ja einen Zeilenumbruch erzwingen, ist aber im setInformativeText nicht vorhanden. Warum kommt trotzdem ein Zeilenumbruch (siehe Bild) und wie kann ich diesen Unterdrücken?

Bild:

Verfasst: 3. Januar 2011 15:13
von franzf
Die Anzeige geschieht recht sicher durch ein QLabel. Da die Größe der Box nicht den Inhalt abschneiden soll, ist dort wordWrap auf true gestellt.
Du hast also keine Chance, den Wrap abzustellen. Außer du gehst mit FontMetrics und anderen Hacks der Geometry der MessageBox an die Wäsche. Ich würds lassen.

BTW: QLabel kann RichText, für Zeilenumbrüche nimm deshalb ein "<br>".

Verfasst: 3. Januar 2011 16:03
von TK
setInformativeText nimmt nur QString.
void setInformativeText ( const QString & text )

Wie soll ich das <br> einbringen? So?

Code: Alles auswählen

                msg.setIcon(QMessageBox::Critical);
                msg.setText(tr("Syntaxfehler Dateiname!"));
                msg.setInformativeText(tr("Beispiel-Dateiname der Firmware:<br>"
                                                       "Test.bin/axf:"));
                msg.setWindowFlags(Qt::SubWindow);
                msg.exec();
Das Ergebnis ist aber auch nicht schön anzusehen (siehe Bild, Zeilenumbruch nach "der")

Bild:

Verfasst: 3. Januar 2011 16:10
von franzf
TK hat geschrieben:setInformativeText nimmt nur QString.
void setInformativeText ( const QString & text )

Wie soll ich das <br> einbringen? So?
Das mit dem <br> stand unter "BTW", was mit dem eigentlichen Problem nichts mehr zu tun hatte. Ich hab das nur erwähnt, dass du für ein QLabel (oder auch QTextEdit usw) nicht auf plattformspezifische newlines setzen sollst, wenn RichText geht!

Ich würde es lassen, den Newline selber hinzubiegen (also über ein msgBox->resize(); bis es bei dir passt). Anderes DE, anderer Style, ein paar Hacks im Style (siehe Bespin "MessageBox-Hack"), anderer Font und deine MsgBox schaut wieder nach Müll aus.

Verfasst: 3. Januar 2011 16:25
von TK
Okay. Vielleicht ersetze ich später mal die Msg.Box durch einen Dialog. Danke für die Diskussion.