чашки: как определить, физически подключен и включен текущий принтер / принтер по умолчанию?

Есть ли способ определить, подключен ли принтер к сети, используя libcups или Qt?

Я работаю над программой, которая требует принтер, и использует как libcups и QPrinter

Я хотел бы дать пользователю хорошее сообщение об ошибке, если текущий / принтер по умолчанию не подключен.

Прямо сейчас, если принтер по умолчанию выключен (или не подключен),

cups_dest_s printers = NULL;
int printerCount = cupsGetDests(&printers);

это вылетает:

*** glibc detected *** /home/me/myApp/myApp: double free or corruption (out): 0x088501e0 ***

Как определить, физически подключен и включен ли текущий принтер / принтер по умолчанию?

2

Решение

Нет точного способа определить состояние принтера, так как некоторые принтеры не имеют возможности сообщать об их состоянии операционной системе.

Тем не менее, вы можете узнать текущее состояние принтера:

PrinterState QPrinter::printerState() const

Который возвращается Idle, Active, Aborted а также Error, Вы можете проверить, если состояние принтера Active или же Idle, Но нет никакой гарантии, что ваш принтер правильно сообщает о своем состоянии.

1

Другие решения