如何在窗口中重新绘制Qt窗口或tabview

时间:2015-08-11 02:16:40

标签: qt qml

我想点击一个按钮,然后弹出一个对话框。 Dialog来自Qml,有一个标签,由另一个JavaScript文件中的变量编号组成。当变量更改时,对话框应重新绘制,新数字将显示在对话框中。

MyDlg.qml:

import "MyJs.js" as MyJs

Window {

    id: myDialog
    width: 300
    height: 300

    TabView {
        id:myTabView
        width: parent.width
        height: parent.height

        Tab {
            title: "tab 1"
            id: myTab1
            text: MyJs.displayText
            }
     }
}

MyJs.js:

var displayText = "0";

1 个答案:

答案 0 :(得分:2)

绑定在QML和单独的JavaScript文件之间不起作用,只有inline JavaScript expressions。我无法找到明确说明这一点的任何文档,但previous answers中也提到过。

如果您不想进入C ++,请使用QML单例(another answer to that question)。以下是您如何使用它的示例:

MyDialog.qml

import QtQuick 2.0
import QtQuick.Controls 1.0
import QtQuick.Window 2.0

import "."

Window {
    id: myDialog
    width: 300
    height: 300


    TabView {
        id:myTabView
        width: parent.width
        height: parent.height

        Tab {
            title: MySingleton.displayText
            id: myTab1

            Button {
                text: "Click to change singleton property"
                onClicked: MySingleton.displayText = "Hello"
            }
        }
    }
}

MySingleton.qml

pragma Singleton

import QtQml 2.0

QtObject {
    property string displayText: ""
}

qmldir

singleton MySingleton MySingleton.qml

更多信息: