c++ - Print data QTextDocument and QPainter -
how can print html
data using qtextdocument
?
my code, returns error:
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();
error:
qpainter::pen: painter not active qpainter::setpen: painter not active qpainter::pen: painter not active qpainter::setpen: painter not active qpainter::setpen: painter not active qpainter::setpen: painter not active qpainter::restore: unbalanced save/restore qpainter::end: painter not active, aborted
as wrote in comment: drawing on widget outside paintevent
, problem.
here example code ask:
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; }
Comments
Post a Comment