Linux系统下QT实现打印功能,遇到2个问题,请大家帮忙看看,谢谢!

shamohai5566 2016-05-24 09:25:01

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!";
}
...全文
860 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
k642311153 2020-01-03
  • 打赏
  • 举报
回复
楼主这个问题解决了没,同样遇到Linux下Qt的打印机不响应打印任务的问题了
赵4老师 2016-05-26
  • 打赏
  • 举报
回复
因为 windows的用户多,linux的用户少; windows收费,linux免费。
shamohai5566 2016-05-26
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
因为 windows的用户多,linux的用户少; windows收费,linux免费。
没办法选择应用场景,所以就只能硬着头皮面对问题了,一言难尽啊
shamohai5566 2016-05-25
  • 打赏
  • 举报
回复
哥哥姐姐们,大牛们,给点指导啊,不胜感激....

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧