2 qml dosyam var. Toolbarbutton.qml bir düğme oluşturur ve DockWidget.qml bir ListView oluşturur. Toolbarbutton'da, düğmenin tıklandığından DockWidget'e yayın yapmaya çalışıyorum. Sonra listeme öğe eklemek istiyorum.Sorun Giderme 2 QML dosyalarını Sinyalleri kullanarak iletişim kurmak için alma
İletişimi kurmak için bir sinyal kullanmaya çalışıyorum. Toolbarbutton.qml dosyasında, bir saveButton kimliğine sahip bir Dikdörtgen öğem var. Bu Dikdörtgen Öğe altında addSaveHistory() adında bir sinyal ekledim. Kodu kısaltdım, böylece ne yaptığımı görmek daha kolay.
Rectangle {
id: saveButton
width: 50
height: 30
border.color: "white"
color: buttonMouseArea.containsMouse ? "grey" : "black"
//Button text
Text{
id: buttonLabel
anchors.centerIn: parent
text: "Save +"
color: "white"
}
signal addSaveHistory(string url)
MouseArea{
id: buttonMouseArea
anchors.fill: parent //anchor the mousearea to the rect area
//onClicked handles valid mouse button clicks
onClicked: {
addSaveHistory("Hello?") //dispatch the event
}
}
}
DockWidget.qml dosyasında Connections bileşenini kullanan bir Öğem var. Kodu kısalttım, böylece ne yaptığımı görmek daha kolay.
Item{
width: 100
height: 100
objectName: "Save + History"
Rectangle {
id: rect
anchors.fill: parent
color: "#323232"
Connections {
target: saveButton //id of rectangle in ToolbarButton.qml
onAddSaveHistory: {
// this is never called
}
}
}
Ben onAddSaveHistory asla denir neden anlamaya gibi olamaz. Ayrıca Dockwidget.qml dosyasını Toolbarbutton.qml dosyasına yüklemek için bir Loader bileşenini kullanmayı denedim ve sonra da özellikle Dockwidget'de bir işlevi çağırmayı denedim, ancak bu da işe yaramıyor.
Sinyallerin nasıl çalışması gerektiğine dair yanlış bir fikrim var mı? Ben herhangi bir rehberlik takdir ediyorum.
İşte benim main.qml dosyası. Her şeyden
import QtQuick 2.2
import Painter 1.0
import "save.js" as Save
Plugin {
//executed at startup
Component.onCompleted:{
//add toolbar
alg.ui.addToolBarWidget("ToolbarButton.qml")//add a button to toolbar
alg.ui.addDockWidget("DockWidget.qml")//add dock widget
Save.log("Incremental Save Plugin has been created")
}
}
Merhaba Sean, Yardımlarınız için çok teşekkürler. Benzersiz bir sorunum var çünkü arayüz oluşturmak için qml kullanan başka bir uygulama için bir eklenti oluşturmak için qml kullanıyorum. Ana.qml'imi önerdiğiniz gibi ayarlayamıyorum.Bu benim main.qml'nin nasıl biçimlendirilmesi gerektiğidir. Main.qml dosyasını göstermek için orijinal gönderimi düzenledim. – WesM
ToolbarButton.qml dosyasını, dikdörtgen öğenin altına yerleştirilmesi için önerdiğiniz şekilde çalıştım ve daha sonra sinyal, id.signalFucntion() sözdizimi kullanılarak çağrıldı. Ancak, kurmaya çalıştığım bağlantı, ToolbarButton.qml – WesM
'daki sinyali bilmediğinden, alg.ui.addToolBarWidget() ve alg.ui.addDockWidget() öğelerinin ne olduğunu görmeden çözüm ne. Ben argüman olarak aktarılan QML dosyalarını başlattıklarını tahmin ediyorum. Bir şekilde, Eklenti {} kapsamındaki bir Connections {} öğesini kullanabilmek için bunlara başvurabilmeniz gerekir. Bu işlevler için doktora göz atmanız gerekebilir (henüz onlar için herkese açık bir şey bulamıyorum) ya da bunları yazan devlerin tipik bir örneği olup olmadığını sorun. –