<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-CA" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">The fact that the QObject is non copiable, is one of the reason it need a pointer (which can be copied). As for the ownership, you can check with the qqmlengine:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><a href="https://doc.qt.io/qt-5/qqmlengine.html#objectOwnership">https://doc.qt.io/qt-5/qqmlengine.html#objectOwnership</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">You can change the ownership too with setOwnership(). I for one exposed the methods to Qml so each side can check/set the qobject ownership based on the needs. This is very helpful to debug.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">You can use QPointer to have a pointer that will return to null if the qobject get deleted.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Hope this help.<o:p></o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="595" style="width:446.55pt;background:white;border-collapse:collapse">
<tbody>
<tr>
<td width="406" valign="top" style="width:304.7pt;border:none;border-right:solid #0079AC 1.0pt;padding:0cm 7.5pt 0cm 0cm">
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;text-align:center">
<span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#444444"><br>
</span><img border="0" width="396" height="102" style="width:4.125in;height:1.0625in" id="Picture_x0020_1" src="cid:image001.jpg@01D4D011.EF589B50" alt="36E56279"><span lang="FR"><o:p></o:p></span></p>
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;text-align:center">
<span lang="FR" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#444444">une compagnie 
</span><img border="0" width="55" height="14" style="width:.5729in;height:.1458in" id="Picture_x0020_2" src="cid:image002.jpg@01D4D011.EF589B50"><span lang="FR"><o:p></o:p></span></p>
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;text-align:center">
<span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#444444">RAPPROCHEZ LA DISTANCE</span><span lang="FR" style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
<td width="189" style="width:141.85pt;padding:0cm 0cm 0cm 0cm">
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" style="border-collapse:collapse">
<tbody>
<tr>
<td width="305" valign="top" style="width:228.75pt;padding:0cm 0cm 3.75pt 7.5pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:18.75pt">
<b><span lang="FR-CA" style="font-size:14.0pt;font-family:"Arial",sans-serif;color:#073763">Jérôme Godbout</span></b><b><span lang="FR-CA" style="font-size:14.0pt;font-family:"Arial",sans-serif"><br>
</span></b><span lang="FR-CA" style="font-size:10.0pt;font-family:"Arial",sans-serif">Développeur Logiciel Sénior / <br>
Senior Software Developer</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td valign="top" style="padding:3.75pt 0cm 3.75pt 7.5pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#073763">p:</span></b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#073763"> </span><span style="font-size:10.0pt;font-family:"Arial",sans-serif">+1
 (418) 800-1073 ext.:109</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td valign="top" style="padding:3.75pt 0cm 3.75pt 7.5pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#073763"><a href="http://www.amotus-solutions.com/" target="_blank"><span style="color:#1155CC">amotus.ca</span></a><br>
<a href="http://statum-iot.com/" target="_blank"><span style="color:#1155CC">statum-iot.com</span></a><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><a href="https://www.facebook.com/LesSolutionsAmotus/"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_3" src="cid:image003.png@01D4D011.EF589B50"></span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif"> </span><a href="https://www.linkedin.com/company/amotus-solutions/"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_4" src="cid:image004.png@01D4D011.EF589B50"></span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif"> </span><a href="https://twitter.com/AmotusSolutions"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_5" src="cid:image005.png@01D4D011.EF589B50"></span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif"> </span><a href="https://www.youtube.com/channel/UCoYpQgsmj1iJZyDjTQ3x8Ig"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_6" src="cid:image006.jpg@01D4D011.EF589B50"></span></a><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td valign="top" style="padding:3.75pt 0cm 3.75pt 7.5pt"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Interest <interest-bounces@qt-project.org>
<b>On Behalf Of </b>Sylvain Pointeau<br>
<b>Sent:</b> March 1, 2019 6:44 AM<br>
<b>To:</b> Qt Project <interest@qt-project.org><br>
<b>Subject:</b> [Interest] using a custom class as parameter of signal/slot, used in QML<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">Dear all,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I understood how to use a struct / simple class as a parameter of a signal / slot, and it works well by value.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">However as soon as we have to declare the type for QML, it is not good anymore.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">It seems that it must be derived from QObject and passed by pointer.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="line-height:15.0pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222">Do I understand well that the QML world does only accept pointers on QObject?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="line-height:15.0pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#222222"><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal">However I don't understand, who owns the pointer of the custom class (derived from QObject) and who actually deletes it?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">(I tried a sharepointer but QML does not know how to handle it)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Do you have any idea?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Best regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Sylvain<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>