so langsam werde ich ein bisschen frustriert.
Mein Anliegen ist scheinbar ein ganz simples: ich möchte den Platz, den ein der Text eines QGraphicsTextItem einnimmt, begrenzen.
Soll heißen:
ich möchte festlegen können, dass der Text maximal z.B. 200 Pixel seitlich einnimmt. Ist der Text länger, soll ein Zeilenumbruch stattfinden.
Ist der Text kürzer, soll sich das QGraphicsTextItem jedoch nicht unnötig in die Länge ziehen.
Ich weiß nicht, auf welche Art und Weise ich das einstellen soll.
Das Naheliegendste wäre natürlich:
Code: Alles auswählen
QGraphicsTextItem::setWidth()Dann dachte ich, dass ich das Ganze wohl als Html setzen muss, also mit
Code: Alles auswählen
QGraphicsTextItem::setHtml(text)Laut „QGraphicsTextItem::toHtml()“ verwendet Qt zur Darstellung von „text“ einen Absatz, also <p>.
Nun ist es aber so, dass das zu diesem Zweck von CSS zur Verfügung stehende „max-width“, das im Standard auch für <p> zur Verfügung steht, schlichtweg nicht interpretiert wird.
Genau verfolgen kann ich dieses Fehlverhalten leider nicht, da sich meine Angaben nicht in der Ausgabe von „toHtml()“ niederschlagen. Bzw. nur teilweise. (Oder ist das gar beabsichtigt?)
Wenn ich
Code: Alles auswählen
QGraphicsTextItem::setHtml('<a href="blabla">' + text + '</a>')Wenn ich das gleiche mit z.B. <font> mache, ist die Ausgabe von „toHtml()“ jedoch einfach:
Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Trebuchet MS'; font-size:8pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Text</p></body></html>Soll heißen: Bestimmte HTML-Elemente werden verwendet UND bei „toHtml()“ ausgegeben (<a>), andere werden verwendet, ABER NICHT ausgegeben (<font>).
Ein StyleSheet mit einem Style für einen Absatz <p> zu setzen, ändert schlichtweg nichts.
Code: Alles auswählen
self.document().setDefaultStyleSheet(QtCore.QString("p {max-width: 50px;}"))
self.setDocument(self.document())Das Gleiche mit
Code: Alles auswählen
self.document().setDefaultStyleSheet(QtCore.QString("font {font-size: 30px;}"))
self.setDocument(self.document())Wahrscheinlich habe ich es jetzt ein bisschen übertrieben und mein Anliegen wird gar nicht mehr richtig klar, drum noch einmal:
ich möchte nichts anderes, als dass ich kontrollieren kann, wie breit ein QGraphicsTextItem maximal werden kann.
Ich finde wirklich nichts Nützliches im Internet, drum hoffe ich auf eure Hilfe.
Danke
Edgar