C++ Qt:在打印机点阵上打印

C++ Qt:在打印机点阵上打印,c++,qt,printing,C++,Qt,Printing,我正试图使用Qt将一些字符串打印到打印机点阵LX-300+上,但字体似乎有点歪斜。一些用户也有这个问题,但我直到现在才找到解决方案。请帮我解决这个问题。如果这是Qt错误,我是否需要使用其他框架(可能是.net)创建dll或应用程序?这是我的密码 QTextDocument document; QTextCursor cursor = QTextCursor(&document); QFont font = QFont("Courier"); QTextCharFormat format

我正试图使用Qt将一些字符串打印到打印机点阵LX-300+上,但字体似乎有点歪斜。一些用户也有这个问题,但我直到现在才找到解决方案。请帮我解决这个问题。如果这是Qt错误,我是否需要使用其他框架(可能是.net)创建dll或应用程序?这是我的密码

QTextDocument document;
QTextCursor cursor = QTextCursor(&document);
QFont font = QFont("Courier");
QTextCharFormat format = QTextCharFormat();
format.setFont(font);
cursor.setCharFormat(format);
cursor.insertText("lorem ipsum dolor sit amit amit ");

QPrinter printer(QPrinter::ScreenResolution);
printer.setPrinterName(ui->ddlPrinter->currentData().toString());
printer.setColorMode(QPrinter::GrayScale);
printer.setPageSize(QPrinter::A4);
printer.setFullPage(false);
QPrintDialog dialog(&printer, this);
document.print(&printer);

我使用的是Qt5.4.0 mingw491 32 OS win 7 64位

我可以像下面的伪代码一样直接使用Windows API解决这个问题

OpenPrinter(name,&hPrinter, NULL);
dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo );
bStatus = StartPagePrinter(hPrinter);
BOOL bStatus = WritePrinter(hPrinter,(LPVOID)buffer,text.length(),&dwBytesWritten);

希望这有助于某人

字体似乎有点歪斜,如果您不提供问题打印输出的清晰600dpi+扫描图像,甚至无法开始解决您的问题。要复制,您还必须在QTextDocument上设置一个显式字体,让我们知道它在什么操作系统上,什么Qt版本,以及您使用的打印机驱动程序版本和提供程序。我添加了更多说明,如何在QTextDocument上设置字体?在将任何其他内容添加到文档之前设置默认字体。您应该真正添加图像或仅添加到imgur的链接。如果您还不能直接附加图像,通常会有人快速编辑以添加来自Qt的无效打印输出的图像,以及来自写字板或记事本的预期打印输出的图像。你可能可以用照相手机拍到足够好的图像来显示问题。