0

QML で必要なカスタム プロパティを作成する方法はありますか? たとえば、次のようなものです。

property required int numRows

コンポーネントはそれなしでは機能しないため、コンポーネントのユーザーが特定のプロパティを渡すように強制したいと考えています。

4

3 に答える 3

2

いいえ、できません。最も確実な方法は、プロパティに有効なデフォルト値を与えることです。

回避策として、無効な値 (-1 など) を指定し、アイテムの Component.onCompleted スロットの値を確認して、プロパティが有効でない場合は console.log を表示することができます...

ただし、最初の方法を優先してください。再利用性の目標のために、コンポーネントは常にデフォルト値で使用できる必要があります。

于 2013-07-30T22:35:32.310 に答える
0

Qt トロールは、Component.onCompleted はほとんどのことを行うための推奨される方法ではなく、実装する必要があるハックであると自分自身に言い聞かせました。

可能な限り最善の方法は、宣言型のイネーブラーを使用することです。次のようなものが理想的です。

MyItem{
  property int myvalue: -1
  enabled: myvalue != -1  // Use other number if neccesary
}

これはインタラクティブな要素を有効にするために機能しますが、次のようにもっと興味深いものを作ることができます:

MyItem{
  property int myvalue: -1
  onMyvalueChanged:{
      enabled = true
      callMyInitFunction(something)
  }
}

ユーザーが値を変更するとトリガーされ、他の関数または初期化子を呼び出すことができます。一度だけ初期化したい場合は、無効になっているかどうかを確認できます。

MyItem{
  property int myvalue: -1
  onMyvalueChanged:{
      if (!enabled){
        enabled = true
        callMyInitFunction(something)
        return
      }
      // Stuff to do of already initialized
      callOtherStuff(otherThing)
  }
}

最後に、あなたが書いた「特定のプロパティを渡す」という言葉を読むと、代わりにオブジェクトのjavascript関数を作成して呼び出すことができるようです。

MyItem{
 property int _myprop: 0
 function launch(param1, param2, param3){
    _myprop = param3
    // do stuff
  }
}

次に、作成する代わりに起動して呼び出します。これは、ユースケースによっては、再利用可能なダイアログで機能する場合があります。

もちろん、必要なものに応じて、いくつかの方法があります。

于 2015-05-04T05:57:58.347 に答える