Frage

Ich habe den folgenden Code ein.

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);
   }
}
So

ist der Pfad wie folgt aus: - Datei-Dialog wird angezeigt - Benutzer wählt Format und Datei - das System zieht Plot auf QPixmap - Speichert QPixmap in die Datei

.

Es funktioniert für PNG und BMP, ohne ein Problem, aber für JPEG, JPG, JPG, etc es funktioniert nicht.

Ich war in aller Dokumentation Qt jedoch keine Details. Es sollte einfach funktionieren. Irgendwelche Ideen?

Ich bin mit Qt kommerzielle Version, 4.5.1 für Windows.
Ich verwende dlls, Qt ist nicht auf dem Weg.

Ich habe erkannt, dass ich statisch zu einem klassischen 3rd-Party-jpeg.lib an Verknüpfung (Das JPEG-Software Independent JPEG Group), die von anderer Bibliothek verwendet wird.

Ist es möglich, dass ein Konflikt oder etwas aus diesem Grunde entsteht?

Oder es ist einfach, dass Plugin nicht richtig geladen wird.

War es hilfreich?

Lösung

wahrscheinlich es kann nicht das Plugin finden ...

Sie können Bibliothekspfad hinzufügen zu projizieren oder Sie können einfach imageformats Ordner in der Nähe Ihrer binären setzen.

imageformats Ordner ist in Plugins ..

(wahrscheinlich Sie schräges Anzeige von JPEG-Bilder auch)

Andere Tipps

Wenn Sie eine statische Aufladung machen, haben Sie QTPLUGIN += qjpeg auf Ihre .pro-Datei hinzufügen, so dass die statische JPEG-Bibliothek des imageformats mit Ihrer Anwendung verknüpft ist.

Ihr Plugin ist höchstwahrscheinlich fehlen, beste Weg ist, um nur die Auflistung Bildformaten zu arbeiten, die das Toolkit unterstützt.

Dieses Beispiel ist von meinem Bild einfügen, aber Sie sollten es anpassen können für Ihre speichern unter:

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);

Auch wir manchmal Formate verlieren, wenn ein Entwickler kopiert eine Debug zu einem QA Maschine bauen. Die Debug-Version wird für den Debug-Plugins sucht und nicht, sie zu laden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top