我有以下问题。我想抓取一个小部件并将其保存为图像。我想把它保存为png,jpeg和tiff。我写了下面的代码:Qt抓取小部件并保存图像
QString s = QFileDialog::getSaveFileName(this, "Save as", "Choose a filename", "PNG(*.png);; TIFF(*.tiff *.tif);; JPEG(*.jpg *.jpeg)");
std::string current_string = s.toLocal8Bit().constData();
//current_string = current_string + ".png";
char * buffer = new char[current_string.length()];
std::string temp = buffer;
char* temp2 = &temp[0];
strcpy(buffer, current_string.c_str());
char* pch = strtok (temp2,".");
pch = strtok (NULL, ".");
if(!QPixmap::grabWindow(m_widget->winId()).save(buffer,pch))
{
QMessageBox::warning(this, "File could not be saved", "ok", QMessageBox::Ok);
}
这在我的笔记本电脑上正常工作。当我做一个Visual Studio安装程序时,它也可以在我的笔记本电脑上正常工作,但是当我将它安装在另一台PC上时,则png格式可以正常工作(保存正确的图像),但不能保存jpeg和tif。然后我在另一台电脑上试了一下,但是我在Visual Studio中直接用项目文件尝试了它。在那里我有我的电脑等所有项目设置,并有jpeg和tif不工作。 PNG的作品,但它只保存在该电脑上的白色图像。此外,我还尝试了安装文件和其相同的PNG =白色图像。
任何人都可以帮助我吗?
你需要图像的插件,例如见这个问题:http://stackoverflow.com/questions/2241141/embedded-jpg-resources-not-loading-in-qt-应用程序 – 2013-05-03 15:19:23
我已经尝试复制exe文件夹中的4个dll。但它也不起作用。这也不能解释为什么在一台电脑上的PNG图像是白色的,为什么它不能保存jpeg和png文件,当我在Visual Studio调试模式下尝试它时。 ? – CmasterG 2013-05-03 16:32:14