QPrintDialog: Cannot be used on non-native printers
-
Ciao a tutti,
creo una nuova applicazione Qt widget in Qt creator e metto il seguente codice sul click di un bottone
QList<QPrinterInfo> plist = QPrinterInfo::availablePrinters(); qDebug() << "numbers of printers:" << plist.length(); foreach (QPrinterInfo pinfo, plist) { qDebug() << "printer name:" << pinfo.printerName(); } QPrinterInfo pinfo; QPrinter printer(QPrinter::HighResolution); if (!pinfo.defaultPrinter().isNull()) { qDebug() << "default printer name:" << pinfo.defaultPrinterName(); printer.setPrinterName(pinfo.defaultPrinterName()); } QPrintDialog dialog(&printer, this); if (dialog.exec() == QDialog::Accepted) { }
tutto funziona correttamente, questo è il risultato.
Inserisco lo stesso identico codice nella mia "applicazione princicpale" e la chiamata dialog.exec() non si ferma, non mi appare il QPrintDialog e mi ritorna il seguente errore:
QPrintDialog: Cannot be used on non-native printersAnche il numero di stampanti... mi ritorna 0.
Non so più dove sbattere la testa...
Ogni suggerimento è ben accetto!
Grazie in anticipo. -
@VRonin grazie della risposta.
Pensavo alle differenze tra i due progetti... Nell'applicazione principale ho dentro Lime Report, non so se potrebbe dare qualche problema... domani provo a rimuoverlo temporaneamente e vediamo se l'errore scompare. -
Il problema è legato alla mancanza del file windowsprintersupportd.dll.
Dalla dentro la cartella in cui risiede il file compilato del progetto ho lanciato il comando windeployqt
C:\Qt\5.14.2\msvc2017_64\bin\windeployqt.exe --debug .--debug solamente perchè non sono in release
Il windeploy mi ha creato una nuova cartella chiamata printsupport con al suo interno al dll windowsprintersupportd.dll.
Ora lanciando l'applicazione da QtCreator riesco a recuperare le stampanti.