|
1Qter豆
1、linux系统下面执行以下代码,只能获取到实际的打印机,而获取不到PDF等虚拟打印机;windows系统下实际打印机和虚拟打印机都可以获取到;
QList< QPrinterInfo > printList=QPrinterInfo::availablePrinters();
for(int i=0;i<printList.size();i++) { ui->comboBox_PrintList->addItem(printList.at(i).printerName()); qDebug()<<printList.at(i).printerName()<<"\n\t"; } 2、linux系统下,用以下代码实现对当前屏幕截屏,并将所得图片进行打印,发现如果选pdf虚拟打印机可以正常打印,但是如果选一个实际的打印机却打不出来,而且没有任何异常提示;windows系统下不存在这样的问题//拷屏 QPixmap pic=QPixmap::grabWindow(QApplication::desktop()->winId()); bool bOK= pic.save("D:/hyz/pic.JPG","JPG"); if(!bOK) { qDebug()<<"ScreenShot Faild!"; } QImage *screenImage=new QImage("D:/hyz/pic.JPG"); //打印图片 QPrinter printer; QPrintDialog printDialog(&printer,this); if (printDialog.exec() == QDialog::Accepted) { printer.setOrientation(QPrinter:andscape ); QPainter painter(&printer); QRect rect = painter.viewport(); QSize size = screenImage->size(); size.scale(rect.size(), Qt::KeepAspectRatio); painter.setViewport(rect.x(), rect.y(),size.width(), size.height()); painter.setWindow(screenImage->rect()); painter.drawImage(0, 0, *screenImage); qDebug()<<"ScreenShot Sucessed!"; }
|
|