В моем коде у меня есть дополнительная нить для печати:
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.
Иногда во время печати я вижу такие строки в консоли (много раз повторяется):
X Ошибка: RenderBadGlyphSet (недопустимый параметр GlyphSet) 165
Расширение: 148 (RENDER)
Малый код операции: 25 (RenderCompositeGlyphs32)
Идентификатор ресурса: 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();
}
} * * тысяча двадцать-один