2つのqmlファイルがあります。 Toolbarbutton.qmlはボタンを作成し、DockWidget.qmlはListViewを作成します。ボタンがクリックされたことをDockWidgetにToolbarbuttonブロードキャストで通知するようにしています。私は次に私のlistViewに項目を追加したい。信号を使用して通信する2つのQMLファイルの取得に問題があります
私は、通信を確立するために信号を使用しようとしています。 Toolbarbutton.qmlには、IDがsaveButtonのRectangleアイテムがあります。このRectangle Itemの下でaddSaveHistory()というシグナルを追加しました。コードを短くして、自分が行っていることを見やすくしました。
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ファイルには、Connectionsコンポーネントを使用しているアイテムがあります。私はコードを短くして、わたしがやっていることを見やすくします。
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
}
}
}
なぜ、onAddSaveHistoryが呼び出されないのかわかりません。また、Dockwidget.qmlファイルをToolbarbutton.qmlにロードしてからDockwidgetで関数を呼び出すためにLoaderコンポーネントを使用しようとしましたが、うまくいきません。
信号がどのように機能するかについて間違った考えがありますか?どんな指導にも大いに感謝します。
ここに私のmain.qmlファイルがあります。
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")
}
}
こんにちは、ショーン、 ありがとうございました。 Qmlを使用してインターフェイスを作成する別のアプリケーション用のプラグインを作成するためにqmlを使用しているため、私は固有の問題があります。私はmain.qmlを設定することはできません。これは私のmain.qmlをフォーマットする必要があります。元の投稿を編集してmain.qmlを表示しました。 – WesM
私はToolbarButton.qmlを提案したように編集し、矩形アイテムの下に配置し、id.signalFucntion()構文を使ってシグナルを呼び出します。 しかし、私が確立しようとしている接続は、ToolbarButton.qmlの信号についてはわかりません。 – WesM
alg.ui.addToolBarWidget()とalg.ui.addDockWidget()が何を言っているのかわかりません解決策は何ですか?私は引数として渡されたQMLファイルをインスタンス化すると推測しています。プラグイン{}スコープでConnections {}要素を使用できるようにするには、どういうわけかそれらを参照できる必要があります。これらの関数のドキュメントを見る必要があるかもしれません(私はまだそれらのための何かを見つけることができません)か、それらを書いた開発者が典型的な例を持っているかどうか尋ねる必要があります。 –