https://www.cnblogs.com/shenLong1356/p/11210412.html#_label0
QT的C++层的通信
一、自定义信号
关键字:signals
signals :
void ageChanged(int age); //虽然是一个函数,但是无需实现,参数age会传递到槽函数
二、信号和槽函数的关联
关键字:connect
//发送信号对象,发送的信号,接受信号的对象,接受信号的函数
connect(boy,&Person::ageChanged,this,&Person::on_ageChanged);
//又比如
connect(notifer, SIGNAL(onRecvMap(std::shared_ptr<HdMap>)), this,
SLOT(onRecvMap(std::shared_ptr<HdMap>)),
三、发射信号
关键字:emit
emit ageChanged(age); //当年龄age改变时发射信号,让执行槽函数
四、槽函数
关键字:Q_SLOTS
void Person::on_ageChanged(int age) //参数从信号那里来
{
}
Qml与c++通信
一、注册类
两种方式(si是一个类)
qmlRegisterSingletonInstance("C", 1, 0, "Si",Si::getInstance());//加入相应的参数
或者
engine.rootContext()->setContextProperty("si",new Si());
二、声明为Q_INVOKABLE、Q_PROPERTY
si类内的函数声明为Q_INVOKABLE
变量声明为:Q_PROPERTY
Q_PROPERTY(double x_min READ getXmin);
Q_INVOKABLE void ac();
Q_INVOKABLE void ac(const QString& name = "");