を行うのを助けることができる今私は、ロードされたファイルに存在mouseareaを実装する必要があり、カスタムアイテムはMouseArea
が含まれています作成。あなたは、たとえば、alias
を使用することができます外部からの領域にアクセスできるようにするには:
MyItem.qml
import QtQuick 2.7
Rectangle {
id: root
color: "yellow"
property alias area: mouseArea
MouseArea {
id: mouseArea
anchors.fill: parent
}
Text {
anchors.centerIn: parent
text: "Click me!"
}
}
そして、あなたはそれを動的に作成することができます別の方法が使用している
import QtQuick 2.7
import QtQuick.Window 2.0
Window {
id: mainWindow
width: 600
height: 600
visible: true
Component.onCompleted: {
var component = Qt.createComponent("MyItem.qml");
if (component.status === Component.Ready) {
var obj = component.createObject(mainWindow);
obj.width = 200;
obj.height = 200;
obj.anchors.centerIn = mainWindow.contentItem;
obj.area.onPressed.connect(
function(mouse){
console.log("pressed at (", mouse.x,",",mouse.y,")")
});
}
}
}
をConnections
、@ derMは既に気付いています。
「接続」タイプを使用して、信号と機能を他の信号に接続することができます。 http://doc.qt.io/qt-5/qtqml-syntax-signals.html#using-the-connections-type さらなるヘルプについては、ロードされたファイルのスケッチアップが必要です。 – derM
'createQmlObject'で' Loader'を作成するとどういう意味ですか?代わりに 'Qt.createComponent'を使用してください。 – folibis
createQmlObjectを使用する理由は、rectangle7にqmlファイルをロードし、ロードされたファイルuiは応答性がある必要があります@folibis – jay