想实现html转
图片,用了QTextDocument来实现,现在碰到的
问题是不希望它自动换行,那么就要计算出文字的长度来设置合适的图片大小,想不出什么办法,只找到了获得一行文字数目的方法。
用QTextBlock::length()可以计算出一行文字的长度,但这只是字符个数,不是用html格式化后的长度,
没有考虑每个字符的
字体大小
以下是目前的代码,计算
格式化后文字长度有问题
搞定了,只要用QTextDocument::size()就可以了- QTextDocument doc;
- doc.setHtml("<p align=center>It can be <b>formatted</b> "
- "<font size=+2 color=#fefe99>in</font> <i>different</i> ways.</p>"
- );
- //doc.setTextWidth(pixmap.width()); // broken into multiple lines
- int len = 0, len_pre = 0;
- for (QTextBlock it=doc.begin();it!=doc.end();it=it.next()) {
- len = qMax(it.length(), len_pre);
- len_pre = len;
- qDebug("line length: %d", len);
- }
- qDebug("max len: %d", len*QFont().pointSize());
- QImage pixmap(QSize(len*QFont().pointSize(), 32), QImage::Format_RGB32);
- pixmap.fill(0xffffff);
- //QPixmap pixmap(400, 300);
- //pixmap.fill(Qt::white); //for qpixmap
- QPainter painter(&pixmap);
- doc.drawContents(&painter, pixmap.rect());
- pixmap.save("text.jpg");