Qt 将文本转换为图像(如PNG或JPEG)

Qt 将文本转换为图像(如PNG或JPEG),qt,qt5,Qt,Qt5,我需要帮助将静态文本写入图像文件,而不使用main()中的“QApplication app(argc,argv);”。我的QT版本是5.12.2 目前,我可以使用以下代码执行此操作: int main(int argc, char *argv[]) { QApplication app(argc, argv); QCoreApplication::addLibraryPath("./plugins"); QString imagePath(QStringLiteral("./images/ou

我需要帮助将静态文本写入图像文件,而不使用main()中的“QApplication app(argc,argv);”。我的QT版本是5.12.2

目前,我可以使用以下代码执行此操作:

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QCoreApplication::addLibraryPath("./plugins");
QString imagePath(QStringLiteral("./images/output/testOutput1.png"));
QImage image(500, 400, QImage::Format_RGB888);

image.fill(Qt::red);

QPainter painter;

if (!painter.begin(&image))
    return;

painter.setPen(QPen(Qt::black));
painter.setFont(QFont("Times", 12, QFont::Bold));
painter.drawText(image.rect(), Qt::AlignCenter, "writing text on image");
painter.end();

image.save(imagePath);

return 0;
}
我试图得到一个类似的解决方案,它在我的代码中不使用“QApplicationApp(argc,argv);”


当前,如果我删除“QApplication app(argc,argv);”的减速,我的代码将在“painter.drawText(…);”崩溃。

您所能做的最多就是将
QApplication
交换为
QGuiApplication
(从而避免了来自QtWidgets模块的无用依赖)

Qt在
QCoreApplication
(对于QtCore stuff)/
QGuiApplication
(对于QtGui stuff)/
QApplication
(对于QtWidgets stuff)的内部初始化其大部分静态/全局内容;每个源于另一个,因此如果您有一个
QApplication
,那么您已经拥有了Gui和Core的所有内容

字体引擎(以及其他与绘画相关的东西)在
qgui应用程序中初始化

请注意,
QGuiApplication
实例必须存在,才能使用
QFont

因此,如果不实例化它(或从它派生的类),就不能进行绘制