gpt4 book ai didi

c++ - 永远不会调用 qgraphicsScene 的 drawBackground

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:00 35 4
gpt4 key购买 nike

我有一个覆盖 QGraphicsScene 的 drawBackground 的类,但我的 drawBackground 实现从未被调用。

class CtrlCutScene : public QGraphicsScene
{
Q_OBJECT

public:
CtrlCutScene(QObject *parent = 0);
~CtrlCutScene() {}

protected:
//added override to make the compiler check that signatures match
virtual void drawBackground(QPainter *painter, const QRectF &rect) override;
};

知道我可能做错了什么吗?

最佳答案

虽然提问者已经找到了他们案例的解决方案,但我只是在此处发布我的案例的答案,因为这是针对此问题的第一个谷歌搜索结果。

在我的例子中,我从网页上复制粘贴了函数签名,以确保我得到它绝对 100 正确并且没有拼写错误。

而且这个函数从未被调用过。

原因是函数名前有一个看不见的Unicode字符U+FEFF。而且 QtCreator 编辑器尊重该字符的零宽度,因此即使在粘贴后它对我来说也是不可见的。

​void AnimScene::​drawBackground(QPainter * painter, const QRectF & rect) { // Evil
void AnimScene::drawBackground(QPainter * painter, const QRectF & rect) { // Works

上面是有和没有那个字符的行,用于比较。

至少在预览中,Stackoverflow 似乎将粘贴的 U+FEFF(“零宽度不间断空间”)发布为 U+200B(“零宽度空间”)。但是,同样的视觉效果。

如果您遇到您认为可能由此影响引起的问题,一种检查方法是关闭所有文件,然后转到“工具”菜单 -> “选项...”菜单项 -> “文本编辑器”部分 -> “行为”选项卡 -> “文件编码”面板 -> “默认编码”下拉菜单,并将其更改为类似 US-ASCII 的内容。单击“确定”,然后重新打开您的文件。

查看您的函数签名中是否有任何新字符显示为“无法识别的字符”框。不要保存,因为您可能会破坏源代码中您不想破坏的其他地方的扩展字符,而只是关闭文件并更改您的设置。然后重新打开文件,并重写包含框的所有行。

关于c++ - 永远不会调用 qgraphicsScene 的 drawBackground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947593/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com