Important: Please read the Qt Code of Conduct -

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 3

    You 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?

  • Moderators

    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 )
    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";
                    qDebug()<< "Printer Undefined Error";

Log in to reply