Hallo,
ich habe ein Problem bei der Erstellung des boundingRects, bzw. des Shapes, bei einem einfachen Textlabel
Ich zeichne den Text in der paint Funktion auf folgende Art und Weise:
painter->setFont(QFont("Arial");
painter->setPointSize(10);
QString text="Text";
QRect maxRect=painter->window();
QRectF textRect=painter->boundingRect(maxRect,text);
painter->drawText(textRect,text);
painter->drawRect(textRect);
Das funktioniert auch ganz gut, aber wie kann ich das boundingRect erzeugen, wo ich ja keinen QPainter mit den entsprechenden Eigenschaften zur Verfügung habe.
Vielen Dank schon mal für die Hilfe!
mfg. Matthias
Problem beim boundingrect von Textlabels mit QGraphics
Danke für die schnelle Antwort.
Das Problem bei QFontMetrics ist, dass man auch hier ein PainDevice braucht. Also, wenn ich das mit den FontMetrics ohne Paindevice erstellte boundingRect am Bildschirm darstelle, dann passt das, wenn man es dann allerdings mit höherer Auflösung druckt, dann schrumpft es.
Der Text bleibt natürlich gleich groß, also ist das boundingRect dann zu klein.
Die einzige Möglichkeit die mir noch einfällt, ist das boundingRect während des Zeichnens zu erstellen, aber dann kann man bei einem noch nicht gezeichneten Label die Größe nicht feststellen, bzw. wenn man Drucken will und zur Anordnung der Elemente das boundingRect braucht, muss man zwei mal drucken, damit es vorher angepasst wird. Das muss doch auch eleganter gehen.
Das Problem bei QFontMetrics ist, dass man auch hier ein PainDevice braucht. Also, wenn ich das mit den FontMetrics ohne Paindevice erstellte boundingRect am Bildschirm darstelle, dann passt das, wenn man es dann allerdings mit höherer Auflösung druckt, dann schrumpft es.
Der Text bleibt natürlich gleich groß, also ist das boundingRect dann zu klein.
Die einzige Möglichkeit die mir noch einfällt, ist das boundingRect während des Zeichnens zu erstellen, aber dann kann man bei einem noch nicht gezeichneten Label die Größe nicht feststellen, bzw. wenn man Drucken will und zur Anordnung der Elemente das boundingRect braucht, muss man zwei mal drucken, damit es vorher angepasst wird. Das muss doch auch eleganter gehen.