多语言展示
当前在线:1765今日阅读:26今日分享:39

如何在Qt QML中连接带参数的信号?

Qt与QML交互传值是我们在编写UI界面程序时考虑的最多的事情,我们不仅要qml的美观界面,更要使得界面的可交互性达到最佳,因此,使用Qt中最常用的信号和槽来进行传值就成为了我们修行qml的必修课了。
工具/原料
1

QtCreator4.4.1

2

Qt5.9.2

方法/步骤
1

首先我们创建一个quick工程,然后默认下一步即可,记得在选择ui.qml的时候去勾选就行了。

2

然后我们的项目就创建好了,目录结构如下图。这里我们注意一下,自动生成的main.cpp文件我们需要重命名一下,这个随意改就行,不是main即可,因为待会我们是把整个类的定义和main函数放在一起的,所以这里需要改个文件名,具体原因请查看我的另一篇文章吧。

3

接下来我们既然要在Qt C++里面连接qml中的信号,这里就必须得有一个槽函数了。所以我们先定义一个类,继承自QQmlApplicationEngine,这里继承这个类是因为只有这个类才是加载qml组件的类,就是说它可以获取QML组件中的相关信息属性值。

4

然后我们在这个类中定义一个槽函数用来和qml组件中的信号进行连接的。同样道理,我们在main.qml文件中定义一个信号。并在点击qml MouseArea区域的时候调用

5

然后就是进行连接了,这里我们在main函数里进行连接,这里我们需要定义一个QWindow变量,使用这个变量来和qml中的window进行交互,如果你的qml里面是Item,那么你就应该使用QQuickItem变量了。

6

最终结果如下图,我们在槽函数中打印的语句出现在了调试控制台中了。当然了,你还可以变通一下使用widget来传值的哦。

注意事项

注意最后要加上那个include moc文件语句

推荐信息