Pergunta

Eu tenho o seguinte código.

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

Assim, o caminho é assim: -. Arquivo de diálogo aparece - formato e arquivo de usuários seleciona - o sistema desenha plot sobre QPixmap - Salva QPixmap no arquivo

Ele funciona para PNG e BMP sem um problema, mas para JPEG, JPG, JPG, etc ele falhar.

Eu estava tudo acabado documentação Qt mas não conseguiu encontrar nenhum detalhe. Ele deve apenas trabalhar. Alguma idéia?

Eu estou usando Qt edição comercial, 4.5.1 para Windows.
Eu estou usando dlls, Qt não está no caminho.

Eu só percebi que eu estou ligando estaticamente para uma 3ª jpeg.lib clássica partido (software JPEG do Independent JPEG Group), que é usado por outra biblioteca.

É possível que um conflito ou algo surge por causa disso?

Ou é simplesmente esse plugin não está carregado corretamente.

Foi útil?

Solução

Provavelmente ele não pode encontrar o plugin ...

Você pode adicionar caminho da biblioteca para projeto ou você pode pasta imageformats simplesmente colocar perto de seu binário.

imageformats pasta está em plugins ..

(provavelmente você não pode exibir imagens JPEG também)

Outras dicas

Se você está fazendo uma compilação estática, você tem que adicionar QTPLUGIN += qjpeg ao seu arquivo .pro, de modo que a biblioteca estática jpeg das imageformats está relacionada com a sua aplicação.

O plugin é mais provável falta, melhor forma de trabalho é de apenas listando os formatos de imagem que os suportes Toolkit.

Este exemplo é de minha imagem inserção, mas você deve ser capaz de adaptá-lo para suas economias como:

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

Também nós formatos às vezes perdem Se um desenvolvedor de cópias uma compilação de depuração para uma máquina de QA. A versão de depuração será procurando os plugins de depuração e não conseguem carregá-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top