在单独的线程中打印时,文本在GUI中消失

时间:2012-03-06 12:23:22

标签: c++ qt pdf qthread

在我的代码中,我有另外的打印线程:

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

}

0 个答案:

没有答案