c++ - 如何使用Qt4打印成PNG格式

标签 c++ qt4

我正在努力使用 Qt4 将图像打印为 PNG 格式。 下面的代码默认设置为PDF或PS,但无法选择PNG:

void DetectorView::printToFile()
{

// A basic printing function
QPrinter printer;
QPrintDialog dialog(&printer, this);
if (dialog.exec()==QDialog::Accepted) {
    QPainter painter(&printer);
    this->render(&painter);
    std::cout << "INFO [DetectorView::printToFile] Wrote file " << std::endl;
}
else {
    std::cout << "INFO [DetectorView::printToFile] Cancelling printer " << std::endl;
}
}

如有任何帮助,我们将不胜感激!

最佳答案

使用此链接:Rendering QWidget to QImage loses alpha-channel ,您可以将小部件呈现为 QImage .

然后,使用 QImageWriter ,您可以将其保存为 png:

// render QWidget to QImage:
QImage bitmap(this->size(), QImage::Format_ARGB32);
bitmap.fill(Qt::transparent);
QPainter painter(&bitmap);
this->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);

// save QImage to png file:
QImageWriter writer("file.png", "png");
writer.write(bitmap);

注意:提供的链接适用于 Qt5,但这应该适用于 Qt4。

关于c++ - 如何使用Qt4打印成PNG格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38453863/

相关文章:

c++ - 我们是否需要显式调用分配给 "simple POD classes"的 "placement new"的析构函数?

c++ - 手工自动模板(不使用C++0x)

c++ - 为什么在具有引用字段的类中隐式删除复制运算符?

licensing - 在 Qt 中制作应用程序,在 LGPL 下,我可以出售它吗?

python - 像 QTextEdit 这样的 QWidget 会自动将其高度包装到其内容中?

c++ - 如何阻止 for 循环直到执行 sqlite 查询?

c++ - 为什么分配堆内存比分配栈内存快得多?

c++ - 未命名类 C++ 中的静态数据成员

qt - 什么决定了 QFileDialog 中文件的排序?

c++ - 将多个文件添加到输出以用于额外的编译器 Qt