QML で必要なカスタム プロパティを作成する方法はありますか? たとえば、次のようなものです。
property required int numRows
コンポーネントはそれなしでは機能しないため、コンポーネントのユーザーが特定のプロパティを渡すように強制したいと考えています。
QML で必要なカスタム プロパティを作成する方法はありますか? たとえば、次のようなものです。
property required int numRows
コンポーネントはそれなしでは機能しないため、コンポーネントのユーザーが特定のプロパティを渡すように強制したいと考えています。
いいえ、できません。最も確実な方法は、プロパティに有効なデフォルト値を与えることです。
回避策として、無効な値 (-1 など) を指定し、アイテムの Component.onCompleted スロットの値を確認して、プロパティが有効でない場合は console.log を表示することができます...
ただし、最初の方法を優先してください。再利用性の目標のために、コンポーネントは常にデフォルト値で使用できる必要があります。
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
}
}
次に、作成する代わりに起動して呼び出します。これは、ユースケースによっては、再利用可能なダイアログで機能する場合があります。
もちろん、必要なものに応じて、いくつかの方法があります。