收据打印机送纸而不是打印文本

时间:2016-01-29 11:09:26

标签: qt printing

我正在使用Ubuntu 14.04.3 LTSCUPS 1.7.2Qt 5.5.1 Opensource 64bit打印测试应用程序。我在CUPS中添加了带驱动程序的打印机,测试页打印好了。现在,我的应用由QTextEditQPushButton组成,其pressed()信号触发slot

void UeCentralWidget::ueSendTextToPrinter()
{
//    QStringList availablePrintersNames=QPrinterInfo::availablePrinterNames();

//    for(int indexPrinterName=0; indexPrinterName<availablePrintersNames.size(); indexPrinterName++)
//    {
//        qDebug() << Q_FUNC_INFO
//                 << availablePrintersNames.at(indexPrinterName);
//    }   // for
    qDebug() << Q_FUNC_INFO
             << "Text to print: "
             << this->uePrinterTextEditor()->document()->toPlainText();

    QList<QPrinterInfo> availablePrinters=QPrinterInfo::availablePrinters();

    for(int indexPrinter=0; indexPrinter<availablePrinters.size(); indexPrinter++)
    {
//        qDebug() << Q_FUNC_INFO
//                 << availablePrinters.at(indexPrinter).makeAndModel();

        if(availablePrinters.at(indexPrinter).makeAndModel().contains("POS58"))
        {
            qDebug() << Q_FUNC_INFO
                     << "Printer found";

            QPrinter printer(availablePrinters.at(indexPrinter));

            qDebug() << Q_FUNC_INFO
                     << printer.pageLayout().fullRect();

            QPainter printerPainter(&printer);

            qDebug() << Q_FUNC_INFO
                     << printerPainter.fontInfo().family()
                     << printerPainter.fontInfo().pixelSize()
                     << printerPainter.fontInfo().pointSize();

            if(printerPainter.begin(&printer))
            {
                printerPainter.drawText(100,
                                        100,
                                        this->uePrinterTextEditor()->document()->toPlainText());
            }

            printerPainter.end();
        }   // if
    }   // for
}

执行此slot后,打印机作业会添加到 CUPS队列,这意味着找到了打印机,但打印机只是打印机并且没有打印文本。我还缺少什么?

1 个答案:

答案 0 :(得分:0)

您不需要printerPainter.begin(&printer)printerPainter.end()

我不知道为什么会为你修复它,但如果我猜测它可能是因为显式调用printerPainter.end() 在绘图实际完成之前提前完成绘制操作