• 3330阅读
  • 0回复

如何获取一段html格式化后文字的长度等信息 [复制链接]

上一主题 下一主题
离线novesky
 

只看楼主 倒序阅读 楼主  发表于: 2011-07-29
想实现html转图片,用了QTextDocument来实现,现在碰到的问题是不希望它自动换行,那么就要计算出文字的长度来设置合适的图片大小,想不出什么办法,只找到了获得一行文字数目的方法。

用QTextBlock::length()可以计算出一行文字的长度,但这只是字符个数,不是用html格式化后的长度,没有考虑每个字符的字体大小
以下是目前的代码,计算格式化后文字长度有问题

        


搞定了,只要用QTextDocument::size()就可以了
  1. QTextDocument doc;
  2.     doc.setHtml("<p align=center>It can be <b>formatted</b> "
  3.                 "<font size=+2 color=#fefe99>in</font> <i>different</i> ways.</p>"
  4.                 );
  5.     //doc.setTextWidth(pixmap.width());  // broken into multiple lines
  6.     int len = 0, len_pre = 0;
  7.     for (QTextBlock it=doc.begin();it!=doc.end();it=it.next()) {
  8.         len = qMax(it.length(), len_pre);
  9.         len_pre = len;
  10.         qDebug("line length: %d", len);
  11.     }
  12.     qDebug("max len: %d", len*QFont().pointSize());
  13.     QImage pixmap(QSize(len*QFont().pointSize(), 32), QImage::Format_RGB32);
  14.     pixmap.fill(0xffffff);
  15.     //QPixmap pixmap(400, 300);
  16.     //pixmap.fill(Qt::white);  //for qpixmap
  17.     QPainter painter(&pixmap);
  18.     doc.drawContents(&painter, pixmap.rect());
  19.     pixmap.save("text.jpg");



快速回复
限100 字节
 
上一个 下一个