如何使用html打印QTextDocument数据
我的代码,但返回错误:
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 :结束:画家非活动,中止
发布于 2014-03-24 17:04:35
正如我在评论中所写:您正在使用paintEvent之外的小部件,这是一个问题。
下面是您所问的示例代码:
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;
}https://stackoverflow.com/questions/22614384
复制相似问题