Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从未调用QGraphicscene的缺点接地_C++_Qt - Fatal编程技术网

C++ 从未调用QGraphicscene的缺点接地

C++ 从未调用QGraphicscene的缺点接地,c++,qt,C++,Qt,我有一个类覆盖QGraphicscene的trackground,但从未调用我的trackground实现 class CtrlCutScene : public QGraphicsScene { Q_OBJECT public: CtrlCutScene(QObject *parent = 0); ~CtrlCutScene() {} protected: //added override to make the compiler check that signature

我有一个类覆盖QGraphicscene的
trackground
,但从未调用我的
trackground
实现

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;
};

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

虽然询问者已经找到了他们案例的解决方案,但我只是在这里发布我案例的答案,因为这是谷歌针对这个问题的第一次点击

在我的例子中,我复制粘贴了一个网页上的函数签名,以确保它完全正确,并且没有打字错误

函数从未被调用过

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;
};
原因是函数名前面有一个不可见的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的内容。单击“确定”,然后重新打开文件


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

当询问者找到了他们案例的解决方案时,我只是在这里发布我案例的答案,因为这是谷歌针对这个问题的第一次点击

在我的例子中,我复制粘贴了一个网页上的函数签名,以确保它完全正确,并且没有打字错误

函数从未被调用过

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;
};
原因是函数名前面有一个不可见的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的内容。单击“确定”,然后重新打开文件


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

这里没有太多内容。。。您是否也重写了'QGraphicsView::DruckGround()?没有。是吗?绝对不是!它会覆盖场景的
缺点(…)
-这就是我问的原因。请原谅我问了一个明显的问题,但是你是说你覆盖的函数从来没有被调用过,因为你在函数中放置了一个断点,它从来没有被命中,或者因为你没有看到你认为应该显示的内容?我发现了问题!相应的QGraphicsView的画笔必须设置为Qt::NoBrush。这里没有太多内容。。。您是否也重写了'QGraphicsView::DruckGround()?没有。是吗?绝对不是!它会覆盖场景的
缺点(…)
-这就是我问的原因。请原谅我问了一个明显的问题,但是你是说你覆盖的函数从来没有被调用过,因为你在函数中放置了一个断点,它从来没有被命中,或者因为你没有看到你认为应该显示的内容?我发现了问题!相应QGraphicsView的画笔必须设置为Qt::NoBrush。