我正在使用Ubuntu 14.04.3 LTS
和CUPS 1.7.2
在Qt 5.5.1 Opensource 64bit
打印测试应用程序。我在CUPS中添加了带驱动程序的打印机,测试页打印好了。现在,我的应用由QTextEdit
和QPushButton
组成,其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
队列,这意味着找到了打印机,但打印机只是打印机并且没有打印文本。我还缺少什么?
答案 0 :(得分:0)
您不需要printerPainter.begin(&printer)
或printerPainter.end()
。
我不知道为什么会为你修复它,但如果我猜测它可能是因为显式调用printerPainter.end()
在绘图实际完成之前提前完成绘制操作