在我的代码中,我有另外的打印线程:
class PrintThread : public QThread {
public:
PrintThread(const QString& text, QPrinter* printer): mText(text), mPrinter(printer) {}
void run()
{
QTextDocument doc;
doc.setHtml(mText);
doc.print(mPrinter);
delete mPrinter;
}
private:
QString mText;
QPrinter *mPrinter;
};
在打印到pdf时,需要使用单独的线程来防止GUI冻结。 有时在打印过程中,我会在控制台中看到这样的线条(多次重复):
X错误:RenderBadGlyphSet(GlyphSet参数无效)165
分机:148(RENDER)
次要操作码:25(RenderCompositeGlyphs32)
资源ID:0×0
GUI中的任何文字都会消失。有什么问题以及如何解决?感谢。
我正在使用Qt 4.4.3 线程在这里创建:
void MyClass::print() {
QPrinter *printer = new QPrinter;
printer->setOrientation(QPrinter::Landscape);
QPrintDialog dialog(printer);
if (dialog.exec() == QDialog::Accepted) {
QString text = dataForPrint();
mPrintThread = new PrintThread(text, printer);
connect(mPrintThread, SIGNAL(finished()), this, SLOT(onPrintingFinished()));
mPrintThread->start();
}
}