2016-04-08 12 views
0

Ben penceresinde bazı marjlar içindeki çizim yapmak istiyorum (ressam)Ayar QTextDocument ressamın dikdörtgen (boya yerde)

QTextDocument :: drawContents kullanarak bir pencere basit html üzerinde boyama ediyorum ama görmüyorum Resmin hedef dikdörtgenini (ressam/pencere) belirtmenin doğrudan bir yolu.

Birkaç bunu yapmak için yollar tahmin:. QTextDocuments kullanma :: setMargin (bu sol/üst için farklı değerler izin vermez rağmen

  • bir tarz içine html yerleştirme <div>

  • bir translasyon ressam dönüşümü uygulanır.

Ama bütün bu yapmak istediğim şey için biraz fazla gibi görünüyor ve

cevap

1

(hedef dikdörtgeni anlatmak nereye QPainter :: DrawText ile ilgisi gibi) Ben textWidth mülkiyet Set düz eğer ben bir şey eksik tahmin metnin sığması gereken alanın genişliğine. drawContents'a ilettiğiniz kırpma dikdörtgeni, sığacak kadar fazla varsa, metni dikey olarak keser; Bu konuda pek fazla şey yapamazsın. dışarı çarpanlarına gerekir, bu yüzden

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(); 
} 

Evet, birkaç çemberler üzerinden atlamak gerekiyor:

Yani, bundan sonra sen eksik fonksiyonu olacaktır. drawContents'un benzer bir aşırı yükünün mevcut olmaması belki de mümkündür.