2016-04-08 10 views
0

Ich bin auf einem Fenster einfachen HTML-Malerei QTextDocument mit :: DrawContents (Maler)Einstellung QTextDocument Malers Rechteck (wo malen)

Ich mag die Zeichnung innerhalb einiger Margen im Fenster zu tun, aber ich sehe nicht, eine direkte Möglichkeit, das Zielrechteck des Gemäldes (im Maler/Fenster) anzugeben.

Ich denke, ein paar Möglichkeiten, es zu tun.

  • die QTextDocuments Verwendung :: setMargin (obwohl dies für unterschiedliche Werte nicht zulässt links/oben

  • Platzierung des HTML-Code in eine gestylten <div>

  • Anwendung eine Übersetzung mit dem Maler verwandeln.

Aber all dies scheint ein wenig zu viel für das, was ich tun möchte, und ich denke, wenn ich etwas fehlt gerade (wie Sie mit QPainter :: drawText tun, wo Sie das Zielrechteck sagen)

Antwort

1

Stellen Sie die Eigenschaft textWidth auf die Breite des Bereichs, in den der Text passen soll. Das abgeschnittene Rechteck, das Sie an drawContents übergeben, schneidet den Text vertikal ab, wenn zu viel davon passt. daran kann man natürlich nicht viel ändern. So

, dies wäre die fehlende Funktion Sie nach:

void drawContents(QPainter * p, QTextDocument & doc, const QRectF & rect) { 
    p->save(); 
    p->translate(rect.topLeft()); 
    doc.setTextWidth(rect.width()); 
    doc.drawContents(p, rect); 
    p->restore(); 
} 

Ja, Sie müssen durch ein paar Reifen springen, deshalb muss es herausgerechnet werden. Es ist vielleicht bedauerlich, dass eine ähnliche Überlastung von drawContents nicht existiert.