
代码141行,为什么只能画出图片来,文字画不出来

我在另一个demo中实现了paintEvent事件,结果是正常的




以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
您提问的目的是解决在Qt框架中自定义QGraphicsItem的绘制问题,具体来说,您希望在自定义的paint函数中绘制文字,但遇到了无法显示文字的问题。
MessageItem::paint函数的代码,其中包含了绘制消息边框和文字的逻辑。特别地,代码的第141行尝试通过m_text.drawContents(painter, text_rect);来绘制文字,但似乎没有成功。paintEvent函数实现,其中通过doc.drawContents(&painter, QRect(0,0,1000,1000));成功绘制了富文本。paintEvent函数的实现。问题可能出现的原因有:
m_text对象可能没有正确设置或初始化,导致无法绘制文字。drawContents方法的使用可能不适用于当前的QGraphicsItem绘制上下文。为了解决这个问题,您可以尝试以下步骤:
m_text对象:确保m_text是一个有效的QTextDocument实例,并且已经包含了要绘制的文本。drawText代替drawContents:由于drawContents是QTextDocument的方法,它通常用于绘制整个文档的内容。您可能需要使用QPainter的drawText方法来直接绘制文本。text_rect的坐标和尺寸是正确的,并且QPainter的字体和颜色设置符合您的要求。以下是修改后的代码示例,使用drawText代替drawContents:
// ...之前的代码...
// 绘制文字
QPen penText;
penText.setColor(QColor(90, 180, 255));
painter.setPen(penText);
QTextOption option(Qt::AlignLeft);
option.setWrapMode(QTextOption::WordWrap); // 修正WrapMode的枚举值
QFont font("Microsoft YaHei");
font.setPixelSize(kMsgFontSize);
painter.setFont(font);
QRectF text_rect(textPos.x(), textPos.y(), m_textSize.width(), m_textSize.height());
painter.drawText(text_rect, m_text.toPlainText(), option); // 使用drawText而不是drawContents
// ...之后的代码...
MessageItem::paint函数中。如果代码修改正确,您应该能够在自定义的QGraphicsItem上看到绘制的文本。
请注意,由于您提供的图片内容是PNG格式的代码截图,我无法直接执行代码以验证结果。上述代码和建议基于您提供的图片内容和描述进行推断。如果问题仍然存在,您可能需要进一步调试或提供更多的上下文信息。