Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Вопрос с прорисовкой QTextDocument в файл????


Автор: GianSteps 19.5.2011, 10:57
Всем привет!!! есть следущая задача с которой я зашел в тупик!!!!
Имееться TextEdit где я набираю форматирую текст!!!! необходимо все что есть в етом TextEdit прорисовать в файл (например в .BMP) НО что-бы все прорисововалось одной строкой???? на данный момент у меня все прорисовуеться все как есть тоесть, если в Textedit несколько строк то они так и отображаються??????
Код


void MyWidget::mybuttonclick()
{

    document = new QTextDocument;
    document = textEdit->document();

    QFontMetrics metrics(textEdit->currentFont());

    QImage img(document->textWidth(),100,QImage::Format_Mono);
    img.fill(Qt::white);

    QPainter p(&img);
    p.save();

    QAbstractTextDocumentLayout *layout=document->documentLayout();
    QAbstractTextDocumentLayout::PaintContext ctx;

    QRect rect(0,0, document->textWidth(),100);
    p.setClipRect(rect);
    ctx.clip=rect;

     layout->draw(&p, ctx);

    img.save("new.bmp","BMP");
    p.restore();
}



и вот что получается: user posted image

а нужно чтобы весь текст прорисововался в ОДНУ строку!!!!

Заранее спасибо!!!!

Автор: xwicked 19.5.2011, 18:15
Код

<Цикл начало> Построчно в QString загнать из QTextEdit с пробелами-разделителями</Цикл>
<Файл сохранение> и прорисовать QString  в файл(BMP).</Файл>

Хотя, тут, скорее всего, нужно что-то другое, чтобы форматирование сохранить.

Автор: GianSteps 20.5.2011, 16:05
Спасибо!!!! уже разобрался!!!
 вот так вроде работает!!!!
Код


void MyWidget::ToImage(QTextDocument *document)
{


    QTextDocument *d = document->clone(this);
    d->setTextWidth(d->textWidth());

    QImage img(d->size().toSize(),QImage::Format_Mono);
  img.fill(Qt::white);
  QPainter p(&img);
  p.save();

 QAbstractTextDocumentLayout *l = d->documentLayout();
  QAbstractTextDocumentLayout::PaintContext ctx;

 QRect rect(0, 0, (int)d->size().width(), (int)d->size().height());
 p.setClipRect(rect);
 ctx.clip = rect;
 l->draw(&p, ctx);

 img.save("test.BMP", "BMP");
                    p.restore();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)