名古屋Qt勉強会#18 に参加しましたpost

7月21日(土) に開催された Qt 勉強会 @ Nagoya #18 - connpass に参加しました。

そのまとめなどです。

成果

Qt Quick での文字列の多言語対応

qsTr() で囲う。

ToolButton

ToolButton タイプで利用できる各種プロパティが QtQuick.Controls 1.x と QtQuick.Controls 2.x とで全然違うのでメモ

versionQtQuick.Controls 1.xQtQuick.Controls 2.x
派生ButtonAbstractButton
アイコンiconName プロパティicon.name プロパティ
ツールチップtooltip プロパティToolTip QML Type
  要素押下時に表示不明ToolTip.visible: down
  要素クリック時に表示不明ToolTip.visible: pressed
  要素ホバー時に表示不明ToolTip.visible: hovered

QML で参照のみ可能なプロパティをできるだけ簡素に定義

  Q_PROPERTY(QString hoge MEMBER m_hoge CONSTANT)

new するときとか、C++側からのみアクセスできる setter で値は代入する。

QML で実行可能な関数を定義

  Q_INVOKABLE inline int hoge() {
      return 10;
  }

トラブルシューティング

Invalid import qualifier ID

Invalid import qualifier ID (訳: インポート修飾識別子が無効)

エリアスの頭は大文字でないとダメらしい。

- import "xxx" as my
+ import "xxx" as My

depends on non-NOTIFYable properties: XXXXX:YYYYY

depends on non-NOTIFYable properties: XXXXX:YYYYY (訳: 通知できないプロパティに依存)

読み取り専用の場合は CONSTANT をつければ良い。

           :
-     Q_PROPERTY(QString title MEMBER m_title)
+     Q_PROPERTY(QString title MEMBER m_title CONSTANT)
           :

Type XXXX unavailable

Type XXXX unavailable (訳: タイプ XXXX は利用できません)

XXXX をちゃんと定義しているはずなのに出る場合は、 XXXX の中でエラーになってるかも? その場合は、該当ファイルを対象としたエラーが出ている。

Qt Creator 上でのエラー注釈表示

QtQuick.Controls 2 を利用しているのに QtQuick.Controls 1 のエラーが表示される

Qt Creator エラー注釈表示

どうやら Qt 5.11 を利用すれば大丈夫な様子。

Qt Quick と C++ とのやりとり

カスタムタイプの登録

HogeType クラスは QObjct から派生

              :
    qmlRegisterType<HogeType>("net.example.foo", 1, 0, "HogeType");
    QQmlApplicationEngine engine;
              :

qml では次のように利用

import net.example.foo 1.0
            :
ApplicationWindow {
            :
    HogeType {
        id: hoge
    }
            :
}

コンテキストに登録

AppData クラスは QObjct から派生

            :
    AppData data;
    QQmlApplicationEngine engine;
    engine.rootContext()->setContextProperty("appData", &data);
            :

qml では次のように利用

            :
Window {
            :
    Text {
        text: appData.getTextFromCpp()
            :
    }
}

懇親会

もぐもぐ♪

もぐもぐ

参考


   /   変更履歴  /   Permalink  /  このエントリーをはてなブックマークに追加 
 カテゴリ: ブログ  /   タグ: C++, Qt, 雑記, 勉強会, QtQuick