我正在尝试使用 Linux 中的 libcups 库获取当前打印机的名称,但我找不到这样的方法。我只找到了如何获得完整的打印机列表,但如何找出要打印的打印机还不清楚。
#include <cups/cups.h> QStringList getPrinters() { QStringList printerNames; cups_dest_t *dests; int num_dests = cupsGetDests(&dests); for (int pr = 0; pr < num_dests; ++pr) { QString printerName = QString::fromUtf8(dests[pr].name); printerNames.append(printerName); } cupsFreeDests(num_dests, dests); return printerNames; }
一旦你有了一个有效的目的地 ( cups_dest_t),就可以通过以下方式检索信息:cupsGetOption
cups_dest_t
cupsGetOption
示例(来自https://openprinting.github.io/cups/doc/cupspm.html#basic-destination-information):
const char *model = cupsGetOption("printer-make-and-model", dest->num_options, dest->options);
要查找默认打印机,可以使用:
其他建议是:
最后但并非最不重要的:
边注:
由于您使用的是 Qt,Qt 没有打印机支持吗?
例如
QPrinter::QPrinter(const QPrinterInfo &printer, QPrinter::PrinterMode mode = ScreenResolution);
(见https://doc.qt.io/qt-6/qprinter.html#QPrinter-1)
和
bool QPrinterInfo::isDefault() const;
(见https://doc.qt.io/qt-6/qprinterinfo.html#isDefault)