Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
Qt快-如何使用C++类从QQualPruttId中继承QML接口?_C++_Qt_Qml_Qt Quick_Qqmlengine - Fatal编程技术网

Qt快-如何使用C++类从QQualPruttId中继承QML接口?

Qt快-如何使用C++类从QQualPruttId中继承QML接口?,c++,qt,qml,qt-quick,qqmlengine,C++,Qt,Qml,Qt Quick,Qqmlengine,我是Qt5.13.0的新手。在VisualStudio2019项目中,我需要在qml接口中显示从QQuickPaintedItem类继承的自定义绘制项。自定义项写入一个名为WQTMaseAgEnter的C++类,声明如下: WQTMessageItem类:公共QQuickPaintedItem { Q_对象 Q_PROPERTYbool rightAligned读取isRightAligned写入设置rightAligned通知rightAligned更改 信号: 无效右对齐更改; 公众: WQ

我是Qt5.13.0的新手。在VisualStudio2019项目中,我需要在qml接口中显示从QQuickPaintedItem类继承的自定义绘制项。自定义项写入一个名为WQTMaseAgEnter的C++类,声明如下:

WQTMessageItem类:公共QQuickPaintedItem { Q_对象 Q_PROPERTYbool rightAligned读取isRightAligned写入设置rightAligned通知rightAligned更改 信号: 无效右对齐更改; 公众: WQTMessageItemQQuickItem*父项=0; 无效油漆工*油漆工; 布尔是右对齐的; void setRightAligned bool righAligned; 私人: 布尔m_右对齐; }; 在C++方面,我试图用这种方式向QML引擎声明上面的类:

QQmlContext*pContext=engine.rootContext; std::unique_ptr pMessageItemnew WQTMessageItem; pContext->setContextPropertyWQTMessageItem,pMessageItem.get; pMessageItem.release; 最后,我尝试在qml文件中声明的ListView中使用上述自定义项,方法如下:

列表视图 { anchors.bottom:controls.top 下边距:2 anchors.top:parent.top id:气球视图 代表:WQTMessageItem { archors.right:索引%2==0?未定义:parent.right 身高:60 右对齐:索引%2==0?false:true 宽度:气球宽度 } 型号:气球型号 间距:5 宽度:parent.width } 不幸的是,这不起作用。我的应用程序进行编译和链接,但在运行时立即关闭,并显示以下错误消息:

QQmlApplicationEngine failed to load component
qrc:/main.qml:33 WQTMessageItem is not a type

我试图自己找到解决办法,但没有成功。有人能解释一下我应该如何修改我的上面的代码以允许它工作吗?< /P> < P>你必须使用函数在QML系统中登记C++类型。可以找到一个例子

方法意在导出一个值,不是从C++到QML的类型。