QT QML 操作 C++ 信号与槽
定义c++
Cpp1.h
#ifndef CPP1_H
#define CPP1_H
#include <QObject>
#include <QString>
#include <QDebug>
class Cpp1 : public QObject
{
Q_OBJECT
public:
Cpp1();
public slots:
// 定义槽函数
void slotsMsg(QString msg);
signals:
// 定义信号函数
void signalsMsg(QString msg);
};
#endif // CPP1_H
cpp1.cpp
#include "cpp1.h"
Cpp1::Cpp1()
{
}
// 接收到信号处理函数
void Cpp1::slotsMsg(QString msg)
{
qDebug()<< "slotsMsg : "<<msg;
}
main.cpp
qmlRegisterType<Cpp1>("Cpp1", 1, 0, "Cpp1");
qml
import QtQuick 2.12
import QtQuick.Controls 2.0
import QtQuick.Window 2.12
import Cpp1 1.0
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Cpp1{
id:cpp1
// 关联槽
onSignalsMsg: slotsMsg(msg)
}
Button{
text: "发送信号"
onClicked: {
// 发送信号
cpp1.signalsMsg("Hello ")
}
}
}
结果
QML debugging is enabled. Only use this in a safe environment.
slotsMsg : "Hello "
slotsMsg : "Hello "
slotsMsg : "Hello "
slotsMsg : "Hello "
slotsMsg : "Hello "
slotsMsg : "Hello "
slotsMsg : "Hello "
slotsMsg : "Hello "