Detecting a printer connection
-
I was trying to find the printer state, though QPrinter provides QPrinter::printerState
Returns the current state of the printer. This may not always be accurate (for example if the printer doesn't have the capability of reporting its state to the operating system).is there any way to monitor the printer when it is connected and disconnected and receive events in the application?
-
printerState returns the state of the printer, as you said.
QPrinter::Idle 0
QPrinter::Active 1
QPrinter::Aborted 2
QPrinter::Error 3You can just set up a signal that checks if the printer is active or not based on the above chart, which could then trigger your events.
-
is this possible to detect a thermal printer?
-
bq. is this possible to detect a thermal printer?
This really goes beyond the scope of Qt. Qt will happily work with any printer that is configured on your system, but I'm not aware of any way to detect the specifics of whether a printer is a thermal printer or not.
However, if you have a thermal printer configured already, you can print to it from Qt.
-
here is the solution for the connection problem,
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() == printerName) { 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"; } }
-
@Mamun I tried this, my printer is on and connected to laptop but it is showing idle and when I remove it is also idle , thanks for reply.