gpt4 book ai didi

c++ - QT 5.4 QPrinterInfo::printerName 返回空白

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:55 27 4
gpt4 key购买 nike

我试图在不使用 QPrintDialog 的情况下实例化打印机,因为我们的 GUI 是 QML,其中 QPrintDialog 不存在(我们正在 QML 中创建打印机选择对话框)。我正在调用两个可调用的 C++ 函数 1) 一个函数检索有效打印机的列表并将其传回 QML,以及 2) 第二个函数实例化用户在 QML 中选择的打印机名称,然后打印给画家。我正在使用带有 Qt5.4.0 的 Ubuntu Linux (32)。我发现的一个有趣的问题是,当我使用 QPrinterInfo::availablePrinterNames() 时,会找到一个有效的打印机名称列表。当我通过使用静态函数 QPrinterInfo::availablePrinters() 获取 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 返回系统中的打印机列表 (availablePrinterNames) 而无需检查,但是当它构造 QPrinterInfo 时,它会检查打印机是否有 PPD 驱动程序。否则,打印机被认为无效,Qt 为其返回空名称。

关于c++ - QT 5.4 QPrinterInfo::printerName 返回空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com