【CXX-Qt】1.3 创建QML GUI

对于Qt中的小型GUI来说,绝对使用QML。它功能强大、灵活、声明式,并且允许我们非常快速地迭代。

因此,让我们在qml文件夹中添加一个main.qml文件:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Window 2.12

// 这必须与build.rs脚本中qml_module指定的uri和版本匹配。
import com.kdab.cxx_qt.demo 1.0

ApplicationWindow {
    height: 480
    title: qsTr("Hello World")
    visible: true
    width: 640
    color: palette.window

    MyObject {
        id: myObject
        number: 1
        string: qsTr("My String with my number: %1").arg(myObject.number)
    }

    Column {
        anchors.fill: parent
        anchors.margins: 10
        spacing: 10

        Label {
            text: qsTr("Number: %1").arg(myObject.number)
            color: palette.text
        }

        Label {
            text: qsTr("String: %1").arg(myObject.string)
            color: palette.text
        }

        Button {
            text: qsTr("Increment Number")

            onClicked: myObject.incrementNumber()
        }

        Button {
            text: qsTr("Say Hi!")

            onClicked: myObject.sayHi(myObject.string, myObject.number)
        }

        Button {
            text: qsTr("Quit")

            onClicked: Qt.quit()
        }
    }
}

这段代码将创建一个非常简单的GUI,由两个Label和两个Button组成。这里重要的部分是MyObject类型的使用。正如你所看到的,我们之前定义的类现在可以在QML中使用了。

由于它只是另一个QObject子类,因此可以在Qt的属性绑定系统中使用,就像myObject.string绑定到myObject.number一样。

然后,标签简单地显示MyObject类中定义的数据。我们可以使用两个按钮与MyObject实例进行交互。

这里再次需要强调的是,MyObject只是另一个QObject子类,可以像任何其他QObject子类一样使用。唯一的区别是,任何可调用的函数都是在Rust中定义的,而不是C++。但对于QML来说,这并没有什么区别。

现在我们有了一些应用程序代码,让我们来构建并运行这个项目吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyuan77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值