Qt - 寻找打印机

时间:2014-09-26 22:10:54

标签: c++ qt printing file-permissions

我需要查找打印机是否具有给定型号。

我找到了QPrinterInfo - 它有一个属性printerName

不幸的是,在Linux中添加打印机时,用户可以根据需要编写名称,或者在安装后更改它,因此名称不可靠

我读到Qt 5.x有一个“printerModel”,那会很棒......但我必须使用4.7-8

我试图从/etc/cups/printers.conf

中读取
QString fileName = "/etc/cups/printers.conf";
QFile printerConf(fileName);
if (printerConf.open(QIODevice::ReadOnly | QIODevice::Text))
{
    // i wish but it never happens
}

但由于权限我无法阅读。

Qt 4.8,Ubuntu

1 个答案:

答案 0 :(得分:0)

cups API包含所需的所有信息:

http://www.cups.org/documentation.php/api-cups.html

#include <cups/cups.h>

cups_dest_t *dests;
int num_dests = cupsGetDests(&dests);
cups_dest_t *dest;
int i;
const char *value;

for (i = num_dests, dest = dests; i > 0; i --, dest ++)
  if (dest->instance == NULL)
  {
    value = cupsGetOption("printer-make-and-model", dest->num_options, dest->options);
    printf("%s (%s)\n", dest->name, value ? value : "unknown");
  }

cupsFreeDests(num_dests, dests);