1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

QtAdvent Calendar 2016

Day 17

C++からQMLへユーザ定義型を渡す

Posted at

はじめに

Qt Advent Calendar 2016 17日の記事です。

初めてのAdvent Calendarで何を書こう?と思っていたのですが、
ちょうどQMLのお仕事でやった C++からQMLへデータを渡すコードを紹介します。

ソースコードは、ここに上げました。

結論

マクロ Q_GADGETQ_DECLARE_METATYPE を使うことで、QMLからユーザ定義型を参照することができます。

やりたいこと

viewに関するデータをC++で受け取り、QMLで値を参照すること。
サンプルでは受け取り処理は省いています。

どうやって?

基本的に QMetaObject::invokeMethod を使って、QMLに定義した関数をCallすることができます。
この時に、マクロ Q_ARGQVariant型 を使うことで渡すことができます。

が... QVariant型は内包できる型が決まっています。 URL

Note that this only works for QObject subclasses which use the Q_OBJECT macro.

継承とマクロで解決できるそうですが、
マクロ Q_DECLARE_METATYPEQ_GADGETを使うことで継承せず、スッキリと解決できます!

まとめ

マクロ Q_GADGETQ_DECLARE_METATYPE を使うことで、QMLからユーザ定義型を参照することができます。

時間ギリギリ + 端折った記事になってすみません *<|:-)

明日は、Ohgochi さんです。Mobile楽しみですね。

参照

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?