QT 5.4 QPrinterInfo::printerName返回空白
QT 5.4 QPrinterInfo::printerName returns blanks
我正在尝试在不使用QPrintDialog的情况下实例化打印机,因为我们的GUI是QML,而QPrintDial不存在(我们正在QML中创建打印机选择对话框)。我正在调用两个可调用的C++函数:1)一个函数检索有效打印机的列表并将其传递回QML;2)第二个函数实例化用户在QML中选择的打印机名称,然后打印给画家。我使用的是Ubuntu Linux(32)和Qt5.4.0。我发现的一个有趣的问题是,当我使用QPrinterInfo::available PrinterNames()时,会发现一个有效的打印机名称列表。当我使用静态函数QPrinterInfo::available Printers()获得QPrinterInfo对象的列表,然后遍历该列表并在printerName中显示名称时,会返回一个空字符串。文档中说,这应该是打印机的唯一ID,而不是空字符串?????
以下是一个演示问题的摘录:
#include <QCoreApplication>
#include <QString>
#include <QStringList>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrinterInfo>
#include <QDebug>
#include <QList>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "Printer names via availablePrinterNames method";
QStringList name_list = QPrinterInfo::availablePrinterNames();
foreach ( QString name, name_list)
qDebug() << name;
qDebug() << "nPrinter names via availablePrinters method";
QList<QPrinterInfo> info_list = QPrinterInfo::availablePrinters();
foreach ( QPrinterInfo info, info_list )
qDebug() << info.printerName();
return a.exec();
}
我没有在早期版本的QT或Windows版本中尝试过这种方法。有人有什么线索吗?
感谢
简而言之:问题的原因是CUPS支持无人驾驶打印机(info),而Qt不支持。
Qt使用CUPS API返回系统中打印机的列表(可用的打印机名称)而不进行检查,但当它构造QPrinterInfo时,它会检查打印机是否有PPD驱动程序。否则,打印机将被视为无效,Qt将为其返回空名称。
请尝试一下,它对我有效。首先,你应该将windowsprintersupport.dll添加到你的项目中。
int count = 0;
QList<QPrinterInfo> info_list = QPrinterInfo::availablePrinters();
foreach ( QPrinterInfo info, info_list )
{
count++;
qDebug()<< "Printer_"<< count<< ": " << info.printerName() << "State: " << info.state();
if(info.printerName() == "YOUR_PRINTER_NAME")
{
if (info.state() == 0)
qDebug()<< "Printer Idle";
else if (info.state() == 1)
qDebug()<< "Printer Active";
else if (info.state() == 2)
qDebug()<< "Printer Aborted";
else if (info.state() == 3)
qDebug()<< "Printer Error";
else
qDebug()<< "Printer Undefined Error";
}
}
相关文章:
- 无法通过空白将文本文件行分隔为矢量
- 由cin中的字符串中未捕获空白引起的分割错误
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 代码精简版页面变为空白
- 在OpenCV C++中创建空白图像
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 我如何使它,无论用户用空白字符串按 Enter 多少次,它总是打印"开始"字符串?
- OpenGL - 添加第二个着色器属性会导致空白屏幕
- 对象数组打印空白字符串
- 如何在c++中读取do-while循环中的空白
- C++缓冲区是如何工作的(关于空白)
- Shell_NotifyIcon在系统托盘中创建空白、无响应的图标
- 我需要帮助修复C++空白检测器
- 接受 istream 的空白值
- 多米诺骨牌计划。我不知道如何将我的矢量拉到空白中以打印出来
- OpenGL显示空白的白屏
- 如何创建一个程序来替换单个空白/选项卡的多个空白/选项卡
- 字符指针值为空白,为什么代码不打印5
- 在 OpenGL 中呈现空白的线框立方体
- QT 5.4 QPrinterInfo::printerName返回空白