Текст исчезает в графическом интерфейсе при печати в отдельном потоке - PullRequest
1 голос
/ 06 марта 2012

В моем коде у меня есть дополнительная нить для печати:

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();
    }

} * * тысяча двадцать-один

...