【发布时间】:2020-10-18 03:01:00
【问题描述】:
在我正在编写的游戏的自定义小部件的 paintEvent 方法中,在调用各种模型对象的 render() 方法将它们渲染到小部件后,我正在尝试渲染“高分”文本。这是文本绘制的通用代码:
painter.fillRect(event->rect(), QColor(0, 0, 0));
painter.drawImage(QRectF(event->rect().x(), event->rect().y() + 30, 512, 512), getGameBoardImage());
//...rendering other model components
painter.setBrush(QBrush(QColor(255, 255, 255)));
//painter.setFont(getGameFont());
painter.setFont(QFont("Times New Roman", 16, QFont::Bold));
painter.drawText(0, 0, "HI-SCORE");
我“正在”尝试以从资源加载的自定义字体绘制文本(我在此处找到了答案),但即使使用白色画笔,它也不会显示。我想可能是因为我没有“设置”字体,但将其设置为 Times New Roman 也不会显示任何内容。我可能做错了什么?如您所见,背景是黑色背景,游戏板画在顶部,但在顶部和底部留下了一个小缓冲区。我需要做一些特别的事情来显示文本吗?请不要建议使用 QLabel,因为如果可能,我会尝试将其全部保存在一个小部件中。如果必须,我会将 Hi-Score 和 1-Ups 分成另外两个带有特殊字体的标签集。
【问题讨论】: