我正在使用c ++中的信号和插槽来读取所选目录的内容并输出到MainForm.ui.qml中的TextArea。我知道我有一切正常,因为信号正在发送正确的字符串到main.qml中的函数“setTextArea1”,我可以输出到console.log-但是我似乎无法找到正确的语法将该字符串发送到id :MainForm.ui.qml中的TextArea1。 我一直在
'textArea1 is not defined'
我确信它很简单,但我似乎无法找到任何示例...(我使用单个qml文件重建程序并且它有效但我真的想知道如何使它与MainForm一起使用。 ui.qml)
main.qml
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
signal qmlSelectClicked(string text)
function setTextArea1(text) {
console.log(text);
textArea1.text = text
}
menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("&Open")
onTriggered: console.log("Open action triggered");
}
MenuItem {
text: qsTr("Exit")
onTriggered: Qt.quit();
}
}
}
MainForm {
anchors.fill: parent
selectButton.onClicked: qmlSelectClicked("Select Clicked")
}
}
MainForm.ui.qml
Item {
width: 640
height: 480
property alias printButton: printButton
property alias selectButton: selectButton
property alias textArea1: textArea1
TextArea {
id: textArea1
x: 41
y: 20
width: 558
height: 359
text: "Select a Directory to scan..."
}
RowLayout {
x: 367
y: 379
anchors.verticalCenterOffset: 196
anchors.horizontalCenterOffset: 163
anchors.centerIn: parent
Button {
id: selectButton
text: qsTr("Select")
}
Button {
id: printButton
text: qsTr("Print To File")
}
}
}
谢谢!
答案 0 :(得分:1)
您所处的当前范围并不知道textArea1
的任何内容,如错误消息所示。您需要向id
提供MainForm
:
MainForm {
id: mainForm
anchors.fill: parent
selectButton.onClicked: qmlSelectClicked("Select Clicked")
}
然后使用它限定对textArea1
的访问权限:
mainForm.textArea1.text = text