1

当我单击从一个 qml 布局到另一个 qml 的按钮时,如何加载视图?因为如果我单击要显示下一个屏幕(即登陆屏幕)的按钮,我有一个登录按钮,该怎么做?任何人都可以发送一些想法吗?谢谢。我知道 onclicked 但我如何将它引用到其他 qml 布局?

ImageButton {
                    id: btnlogin
                    topMargin: 50
                    verticalAlignment: VerticalAlignment.Center
                    horizontalAlignment: HorizontalAlignment.Center
                    defaultImageSource: "asset:///images/button_login.png"

                    onClicked: {
                        onClicked: {
4

1 回答 1

2

有几种方法可以实现这一点。你可以 :

1 - 调用将显示下一个屏幕的 C++ 函数。为此,您必须创建一个 Q_INVOKABLE 方法(例如在与当前页面关联的类中),例如

Q_INVOKABLE void showLoginPage();

然后你以这种方式从 QML 调用它

onClicked: {
    controller.showLoginPage();
}

2 - 直接从 QML 显示下一个屏幕。

onClicked: {
    // Directly show the next page from here
}

然后实际显示下一个屏幕,根据您拥有的导航类型,也有不同的方式:

1 - 如果您使用的是 NavigationPane,请按屏幕:

C++ 示例

QmlDocument *qml = QmlDocument::create("LoginPage.qml");

// Creates the root using the page node 
Page *loginPage = qml->createRootNode<Page>();

// Push the login page
navigationPane->push(loginPage);

QML 示例

ImageButton {
    id: btnlogin
    topMargin: 50
    verticalAlignment: VerticalAlignment.Center
    horizontalAlignment: HorizontalAlignment.Center
    defaultImageSource: "asset:///images/button_login.png"
    onClicked: {
         // show login page when the button is clicked
         var page = getLoginPage();
         navigationPane.push(page);
    }
    property Page loginPage
    function getLoginPage() {
        if (!loginPage) {
            loginPage = loginPageDefinition.createObject();
        }
        return loginPage;
    }
    attachedObjects: [
        ComponentDefinition {
            id: loginPageDefinition
            source: "LoginPage.qml"
        }
    ]

2 - 您也可以使用表格

3 - ...

有很多方法可以实现您想做的事情。

希望这些小技巧会有所帮助。

于 2013-06-30T13:51:43.747 回答