Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. QPrintDialog: Cannot be used on non-native printers
Forum Updated to NodeBB v4.3 + New Features

QPrintDialog: Cannot be used on non-native printers

Scheduled Pinned Locked Moved Solved Italian
5 Posts 2 Posters 1.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    addebito
    wrote on last edited by
    #1

    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.

    e8014123-5efd-4c17-ae1f-278e89a26c03-immagine.png

    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 printers

    9f47760d-4e9a-4c1e-86cd-6cd5b3ab713c-immagine.png

    Anche il numero di stampanti... mi ritorna 0.

    Non so più dove sbattere la testa...
    Ogni suggerimento è ben accetto!
    Grazie in anticipo.

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2

      Di solito questo succede se passi un puntatore nullo come primo argomento a QPrintDialog::QPrintDialog(QPrinter*,QObject*). nel tuo esempio QPrintDialog dialog(&printer, this);, &printer non puo' mai essere nullptr quindi funziona sempre

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      A 1 Reply Last reply
      0
      • VRoninV VRonin

        Di solito questo succede se passi un puntatore nullo come primo argomento a QPrintDialog::QPrintDialog(QPrinter*,QObject*). nel tuo esempio QPrintDialog dialog(&printer, this);, &printer non puo' mai essere nullptr quindi funziona sempre

        A Offline
        A Offline
        addebito
        wrote on last edited by
        #3

        @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.

        1 Reply Last reply
        0
        • A Offline
          A Offline
          addebito
          wrote on last edited by
          #4

          Niente... sempre lo stesso risultato.

          numbers of printers: 0
          QPrintDialog: Cannot be used on non-native printers
          QPrintDialog: Cannot be used on non-native printers

          1 Reply Last reply
          0
          • A Offline
            A Offline
            addebito
            wrote on last edited by
            #5

            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.

            1 Reply Last reply
            2

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved