• 3805阅读
  • 4回复

[提问]QTextEdit 如何将其内容生成为 一张 长图片? [复制链接]

上一主题 下一主题
离线dinghim
 
只看楼主 倒序阅读 楼主  发表于: 2013-05-04
— 本帖被 alexltr 执行加亮操作(2013-05-08) —
初学Qt. 用Qt写一个长微博生成和发布的工具.


现用QTextEdit作为编辑器, 想将QTextEdit 中的内容生成长微博的图片. 求问: 要如何进行, 有什么可行方法. 及如何施行??


现能做的到代码为
  1. QSize s = textEdit->frameSize();
  2.     QPixmap p(s);
  3.     textEdit->render(&p);
  4.     p.save("textContent.png", "PNG");
其效果如下:




当前的问题在于这样做只能显示可见部分. 求问如何生成长微博图片. 最后格式排版能和原来一样,




先谢谢啦!
离线ppdayz

只看该作者 1楼 发表于: 2013-05-04
void QWidget::render(QPaintDevice * target, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))

If sourceRegion is a null region, this function will use QWidget::rect() as the region, i.e. the entire widget.
离线dinghim
只看该作者 2楼 发表于: 2013-05-04
回 1楼(ppdayz) 的帖子
能详细一些么, 如何显示不可见的部分. 就是要滑动滚动条才可以看见的部分 还是不可以渲染到pixmap里面.
效果如下:


效果是想要textEdit里所有的内容都可以绘制到位图中.
离线dinghim
只看该作者 3楼 发表于: 2013-05-04
回 1楼(ppdayz) 的帖子
现在找到一种方法是如下
  1. QSize s = textEdit->frameSize();
  2.     QPixmap p(s.width(), s.height()+300);
  3.     QTextDocument* doc = textEdit->document();
  4.     QPainter pt(&p);
  5.     doc->drawContents(&pt);
  6.     p.save("lala1.png", "PNG");

获取QTextEdit的QTextDocument. 然后使用drawContents写到pixmap中. 现在还有一个问题是如何全部写进去.
怎样才可以知道QPixmap需要初始化为多大?? 求指导


离线dinghim
只看该作者 4楼 发表于: 2013-05-05
回 3楼(dinghim) 的帖子
已解决.

QTextDocument:::size()
快速回复
限100 字节
 
上一个 下一个