首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印数据QTextDocument和QPainter

打印数据QTextDocument和QPainter
EN

Stack Overflow用户
提问于 2014-03-24 15:57:34
回答 1查看 2.3K关注 0票数 0

如何使用html打印QTextDocument数据

我的代码,但返回错误:

代码语言:javascript
复制
QString text_x = "Hello World!";

QTextDocument *doc = new QTextDocument(this);
doc->setUndoRedoEnabled(false);
doc->setHtml("<p><span style=\"color:#000000; font-weight:600\">"+text_x+"</span></p>");
doc->setTextWidth(width());
doc->setUseDesignMetrics(true);
doc->setDefaultTextOption(QTextOption(Qt::AlignHCenter));

QPainter *p = new QPainter(this);
p->setRenderHint(QPainter::Antialiasing, true);
p->begin(this);
doc->drawContents(p);
p->end();

错误:

QPainter::笔:画家非活动Painter::setPen:画家非活动QPainter::pen:画家非活动Painter::setPen:画家非活动Painter::还原:不平衡保存/恢复Painter :结束:画家非活动,中止

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-24 17:04:35

正如我在评论中所写:您正在使用paintEvent之外的小部件,这是一个问题。

下面是您所问的示例代码:

代码语言:javascript
复制
class MyDocWidget : public QWidget {
    Q_OBJECT

public:
    explicit MyDocWidget(QWidget * parent = 0, Qt::WindowFlags f = 0)
         : QWidget(parent, f)
    {
        doc = new QTextDocument(this);
        doc->setUndoRedoEnabled(false);
    }

public slots:
    void setHtml(const QString &html) {
         doc->setHtml(html);
         update();
    }

protected:
    void paintEvent(QPaintEvent * event) {
         QPainter p(this);
         p.setRenderHint(QPainter::Antialiasing, true);
         doc->drawContents(&p);
    }

    void resizeEvent(QResizeEvent * event) {
         QWidget::resizeEvent(event);
         doc->setTextWidth(width());
         update();
    }

private:
    QTextDocument *doc;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22614384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档