Question

Je le code suivant.

QString fileName = QFileDialog::getSaveFileName(
   this, 
   tr("Output Image file"),
   (""),
   tr("PNG (*.png);;JPEG (*.JPEG);;Windows Bitmap (*.bmp);;All Files (*.*)")
);

if(fileName != "")
{
   QwtPlot* pPlot = ...
   QSize size = pPlot->size();
   QRect printingRect(QPoint(0, 0), size);

   QPixmap pixmapPrinter(size);
   pixmapPrinter.fill(Qt::white);

   {
      QPainter painter(&pixmapPrinter); 
      pPlot->print(&painter, printingRect);     
   } 

   bool isOk = pixmapPrinter.save(fileName);

   if(!isOk)
   {                
      QString msgText = tr("Failed to write into ") + fileName;

      QMessageBox::critical(this, tr("Error Writing"), msgText);
   }
}

Alors, le chemin est comme ceci: - dialogue Fichier affiche - les utilisateurs sélectionne le format et le fichier - le système tire terrain sur QPixmap - Enregistre QPixmap dans le fichier

.

Il fonctionne pour PNG et BMP sans problème, mais pour JPEG, jpg, JPG, etc, il échoue.

J'étais toute la documentation Qt, mais n'a pas pu trouver tous les détails. Il devrait fonctionner. Toutes les idées?

J'utilise Qt édition commerciale, pour Windows 4.5.1.
J'utilise dll, Qt est pas sur le chemin.

Je viens de réaliser que je suis à une liaison statique de jpeg.lib 3ème partie classique (le logiciel JPEG du Independent JPEG Group), qui est utilisé par d'autres bibliothèques.

Est-il possible qu'un conflit ou quelque chose survient à cause de cela?

Ou il est tout simplement que le plugin n'est pas chargé correctement.

Était-ce utile?

La solution

sans doute qu'il ne peut pas trouver le plug-in ...

vous pouvez ajouter le chemin de bibliothèque de projet ou vous pouvez simplement mettre le dossier imageformats près de votre binaire.

dossier imageformats est dans les plugins ..

(probablement vous cant affichage des images JPEG aussi)

Autres conseils

Si vous faites une accumulation d'électricité statique, vous devez ajouter QTPLUGIN += qjpeg à votre fichier .pro, de sorte que la bibliothèque jpeg statique des imageformats est liée à votre application.

Votre plugin est très probablement manquant, la meilleure façon de travailler est que par liste des formats d'image que la boîte à outils prend en charge.

Cet exemple est de mon image d'insertion, mais vous devriez être en mesure de l'adapter à votre sauvegarde comme:

QString fileFormats = "(";
/* Get all inputformats */
for (int i = 0; i < QImageReader::supportedImageFormats().count(); i++) {
    fileFormats += "*."; /* Insert wildcard */
    fileFormats
            += QString(QImageReader::supportedImageFormats().at(i)).toLower(); /* Insert the format */
    fileFormats += " "; /* Insert a space */
}
fileFormats += ")";

QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
        currentPath, tr("Images ") + fileFormats);

De plus, nous perdons parfois formats si une copie de développeur un débogage construire une machine d'assurance qualité. La version de débogage sera à la recherche pour les plug-ins de débogage et ne parviennent pas à les charger.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top