Qt Quick 事件处理之信号与槽

    前面两篇文章《QML 语言基础》和《Qt Quick 简单教程》中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经可以完成简单的 Qt Quick 应用了。接下来呢,哈,我们要介绍 Qt Quick 中一个灰常灰常重要的主题:事件处理。这将是比较长长长长的一篇,哦,不还有后续好几篇……废话少说,还是谈正事儿吧兄弟姐妹们。

    本文是作者 Qt Quick 系列文章中的一篇,其它文章在这里:

    GUI 应用都是基于事件的(同学,这么说对吗?),不管是用 C++ 还是用 QML ,你的应用都要处理事件,否则的话,哼哼,要你好看!当然当然,你也可以什么事儿不干,就搭个静态界面放那里欣赏……

    Qt Quick 最大的一个特点,是与 Qt 元对象系统的结合;而这里边,我们熟稔的,鼎鼎大名大名鼎鼎的,要不断打交道的,就是信号与槽了。历史是割不断的,继承与发展才是正确的价值观……,了解过 Qt 的开发者一定对信号与槽印象深刻。在 QML 中,在 Qt Quick 中,要想妥善的处理各种事件,同样离不开信号与槽。所以呢,在介绍具体的事件之前,我们先要介绍 QML 中如何使用信号与槽。

    为了演示本文的示例,我们先介绍一个工具: qmlscene 。

qmlscene 工具

    这是 Qt 框架提供的便利工具,使用它,你可以不用建立项目不用撰写 C++ 代码,就可以看到你编写的 qml 文件的效果。我们以 Windows 7 系统为例, qmlscene 需要在命令行窗口中使用。你可以这样打开 Qt 自带的命令行开发环境,参考图 1 找到命令行环境的快捷方式:


            图 1 Qt 命令行环境的快捷方式

    一旦你打开了命令行工具,它会帮你设置好 Qt 需要的环境变量,敲一个 qmake 命令试试吧。如和 图 2 所示:


            图 2 Qt 命令行开发环境

    如果你想知道 qmlscene 工具的详细用法,请输入 qmlscene --help 命令。如图 3 :


            图 3  qmlscene 的帮助

    现在,使用 cd 命令切换到你存放 qml 文档的目录下,就可以验证 qml 的效果了。只需要执行这样的命令: qmlscene yourapp.qml 。当然,yourapp.qml 要替换为你实际的 qml 文档的名字。我这里只是示例。如果你直接输入 qmlscene 命令来执行,那么它会打开一个文件选择对话框,让你选择一个 qml 文档,当你选择了之后呢,该文档对应的界面就会显示出来。我建议你使用 qmlscene yourapp.qml 这种方式,无它,唯快尔。

    来看一个简单的 Hello World ,qml 文档是 hello_world.qml ,内容如下:

import QtQuick 2.0
import QtQuick.Controls 1.1

Rectangle {
    width: 320;
    height: 240;
    color: "gray";
    
    Text {
        anchors.centerIn: parent;
        text: "Hello World!";
        color: "blue";
        font.pixelSize: 32;
    }
}

    在命令行环境执行 qmlscene hello_world.qml ,效果如图 4 所示:


            图 4 使

  • 45
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论
QtQML是两种不同的编程语言,用于开发跨平台的应用程序。Qt是一个完整的框架,用于开发桌面、移动和嵌入式应用程序。QML是一种声明性的语言,用于设计用户界面。 QtQML之间的数据交互可以通过connections和信号机制实现。connections是Qt中用于连接信号函数的宏,可以让两个对象之间建立通信通道。在QML中,可以使用QtQuick里的Connections元素来建立与Qt对象的连接。 在Qt中,通过使用QObject派生类中的信号机制来实现对象之间的通信。信号是一种特殊的成员函数,用于通知其他对象发生了特定的事件。是接收信号的函数,它可以响应接收到的信号并执行相应的操作。 QML中的信号可以通过在QML元素上定义信号属性来实现。QML元素可以作为Qt的对象被使用,在Qt代码中可以通过QObject派生类和Q_PROPERTY宏来访问这些元素。通过使用connections来建立Qt对象和QML元素之间的链接,使得它们能够相互发送信号和响应函数。 QtQML之间的数据交互主要有以下几种方式: 1. 在Qt中定义一个QObject派生类,将其作为QML元素的属性,通过connections建立信号的关联,从而实现数据的传递和交互。 2. 在Qt中定义一个Q_PROPERTY,并在QML中使用property绑定来实现数据的双向绑定。 3. 使用信号来处理用户界面上的事件,比如点击按钮、滑动滑块等。 总的来说,QtQML之间的数据交互可以通过connections和信号机制来实现。这使得QtQML两种语言能够方便地在应用程序中进行通信和数据传递,提高了应用程序的灵活性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

foruok

你可以选择打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值