【问题标题】:Invalid signal parameter type: MouseEvent无效的信号参数类型:MouseEvent
【发布时间】:2014-11-14 01:09:50
【问题描述】:

如果我尝试在 QML 定义的信号中使用 MouseEvent 作为 arg,我会在加载时收到以下错误:

无效的信号参数类型:MouseEvent

Qt 文档中有关于此的冲突信息,在 QML signal syntax documentation 中指出:

允许的参数类型与定义属性属性下列出的相同 [...] 任何 QML 对象类型都可以用作属性类型。

虽然在QML/C++ interaction documentation 中声明:

当QML对象类型作为信号参数时,参数应该使用var作为类型

将参数设置为使用 var 确实有效,但根据 QML 文档,这似乎是不必要的。关于这个in the distant past 有一个错误,但它显然已在 v5.0.0 中解决。所以我做错了什么,还是这是一种回归?

编辑

一个简单的演示:

import QtQuick 2.3

Item {
    signal sig( MouseEvent mouse )
}

【问题讨论】:

标签: qt qml qtquick2


【解决方案1】:

改用QtObject

signal sig(QtObject mouse)

注意:这是可行的,因为QtObject 是普通的QObject,它是所有Qt 对象的基础

【讨论】:

  • 从 Qt 5.12 开始,这会导致错误“无法在参数 0 处转换”、“不兼容的参数很危险且已弃用”
  • 我已经用 Qt 5.12.10 对此进行了测试,并且没有任何警告或错误。怎么了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多