- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个覆盖 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/
编辑:我已经能够将问题追溯到使用 EditText 而不是 TextView。重复调用仅在字段为 EditText 时发生,并且系统在字段为 TextView 时自行运行。我在文档或网上找不到任何内容
我正在尝试在 QGraphicsView::drawBackground 上正确显示网格图案。在我尝试移动添加到场景的项目之前,一切似乎都运行良好。 我在 MainWindow 中添加如下行:
我正在尝试在 Qt 中创建一个类似于 impoly(来自 matlab)的函数。现在,我有一个 QGraphicsView 的子类,并将虚函数“drawBackground”设置为: void roi
我有一个覆盖 QGraphicsScene 的 drawBackground 的类,但我的 drawBackground 实现从未被调用。 class CtrlCutScene : public QG
我是一名优秀的程序员,十分优秀!