在Qt/C++中,发送信号的函数和对应的槽函数在参数顺序、类型方面必须保持一致,此外,要让一个信号发射后进入相应的槽函数,必须用connect进行连接,这样,信号和槽才能连接起来。在QML中,发送信号和接受信号的槽,用起来比Qt/C++还更方便,用法如下:
1. 定义信号: signal sigFunc(type param)进行定义
2. 发送时信号:emit: sigFunc(parameter);
1. 定义信号: signal sigFunc(type param)进行定义
2. 发送时信号:emit: sigFunc(parameter);
3. 接受信号的槽:onSigFunc: { //...; //接收发送过来的参数时,直接用信号定义时的形参param即可 }
例子:
ImageItem.qml文件如下:
import Material 0.1
import QtQuick 2.4
import QtQuick.Layouts 1.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
Rectangle {
id: rect
border.color: "red"
width: 150
height:150
signal testClicked(color colParam); //该文件中发送带参信号
Image {
id:img
anchors.fill: parent
fillMode: Image.PreserveAspectFit
source:"12345.jpg"
}
MouseArea {
id: big_mouse
anchors.fill: parent