【发布时间】:2019-08-26 13:36:27
【问题描述】:
我们有一个应用程序 (QCoreApplication),它接受一些图像作为输入,对它们执行一些操作,然后再次导出它们。我们现在需要向图像添加一些文本,并尝试使用 QPainter 类来完成。在我们的其他应用之一(使用 QApplication)中使用它时一切正常,但在我们的主 QCoreApplication 应用中却没有。
代码如下:
void drawTextOnImage(QImage* image, const QString& text, const QFont& font)
{
QPainter p;
if (!p.begin(image)) return;
p.setFont(font);
p.drawText(image->rect(), Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, text);
p.end();
}
应用程序在drawText 行崩溃。
有什么想法吗?
这是一个非常简单的文本,所以不使用 Qt 的建议也会受到重视。
【问题讨论】:
-
QCoreApplication 是控制台应用程序的基类。无法将 QCoreApplication 与小部件一起使用(并且 QPainter 或 QImage 取决于小部件)。您需要改用 QApplication。
-
您可能会尝试在
QPixmap上而不是在QImage上绘画。 IE。将您的功能更改为:void drawTextOnImage(const QPixmap &image, const QString& text, const QFont& font) -
@markus-nm
QPainter不依赖于小部件,它不需要QApplication,而是需要QGuiAppication。