Имею 2 папки. В папках лежат 1 и 1 файл. Как я могу изменить URL-адрес 1 файла, используя второй файл?
ресурсы:
main.qml
import bb.cascades 1.4
import "Folder_01"
import "Folder_02"
TabbedPane {
Menu.definition: MenuDefinition {
actions: [
ActionItem {
onTriggered: {
sheet_01.open()
}
}
]
}
Tab {
id: tab_01
title: "Tab 01"
File_01 {
}
}
Tab {
enabled: false
}
attachedObjects: [
Sheet_01 {
id: sheet_01
}
]
}
File_01.qml
import bb.cascades 1.4
Page {
titleBar: TitleBar {
title: "File 01"
}
WebView {
id: file_01_WebView
}
}
Sheet_01.qml
import bb.cascades 1.4
import "asset:///Folder_01"
Sheet {
id: sheet_01
Page {
titleBar: TitleBar {
title: "Sheet 01"
dismissAction: ActionItem {
title: "Cancel"
onTriggered: {
sheet_01.close()
file_01_WebView.url = "http://google.com"
}
}
}
}
}
У меня в файле "Sheet_01.qml" ошибка "file_01_WebView.url =" http://google.com "





Здесь это обсуждалось много раз, и документация Qt довольно четко об этом говорит.
Из-за ограничения объема Sheet_01 элемент ничего не знает об элементах вне компонента.
Следуя декларативному стилю разработки, компонент должен сообщать об изменениях своего состояния, чтобы другие элементы могли на это отреагировать. Например:
main.qml
Item {
id: root
MyItem {
id: item1
}
MyItem {
id: item2
onSomeEvent: item1.doSomeAction();
}
}
MyItem.qml
Item {
id: item
signal someEvent();
function doSomeAction() {
console.info("action executed");
}
Component.onComplete: item.someEvent();
}
Какой полный код? Приведенный выше код просто иллюстрирует идею. Если вам сложно понять этот пример, я бы посоветовал вам начать с Книга QML.
Я счастлив. Я закончил руководство пользователя по этой проблеме для других людей. Это функциональная процедура.
// main.qml
import bb.cascades 1.4
import "Folder_01"
import "Folder_02"
TabbedPane {
Menu.definition: [
MenuDefinition {
actions: [
ActionItem {
onTriggered: {
sheet_01.open()
}
}
]
}
]
tabs: [
Tab {
title: "Tab 01"
File_01 {
id: file_01
}
},
Tab {
enabled: false
}
]
attachedObjects: [
Sheet_01 {
id: sheet_01
onSignal_From_Sheet: {
file_01.url = "http://google.cz"
}
}
]
}
// File_01.qml
import bb.cascades 1.4
Page {
id: page1
property alias url: file_01_WebView.url
titleBar: TitleBar {
title: "File 01"
}
WebView {
id: file_01_WebView
}
}
// Sheet_01.qml
import bb.cascades 1.4
Sheet {
id: sheet_01
signal signal_From_Sheet()
Page {
titleBar: TitleBar {
title: "Sheet 01"
dismissAction: ActionItem {
title: "Cancel"
onTriggered: {
signal_From_Sheet()
sheet_01.close()
}
}
}
}
}
Здравствуйте, спасибо за ответ. Не могли бы вы написать полный код? А порядок папок? Большое спасибо.