作者:停止离开静悄悄 | 来源:互联网 | 2023-05-18 18:07
#ifndefMYCLASS_H#defineMYCLASS_H#includeclassMyClass:publicQObject{Q_OBJECTQ_PR
#ifndef MYCLASS_H
#define MYCLASS_H#include class MyClass : public QObject
{Q_OBJECTQ_PROPERTY(QString userName READ getUserName WRITE setUserName NOTIFY userNameChanged) //注册属性userName
public:explicit MyClass(QObject *parent = 0);//实现READ读函数QString getUserName() const{return m_userName;}//实现write写函数void setUserName(QString userName){m_userName = userName;//当属性值改变时发射该信号emit userNameChanged(userName);}signals:void userNameChanged(QString); //声明NOTIFY通知消息
public slots:
private:QString m_userName; //私有变量,存放userName属性的值
};#endif // MYCLASS_H
#include "widget.h"
#include "ui_widget.h"
#include "myclass.h"
#include
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);MyClass* my &#61; new MyClass(this); // 创建MyClass类实例connect(my,&MyClass::userNameChanged,this, &Widget::userChanged);my->setUserName("yafei"); // 设置属性的值//使用QObject类的setProperty函数设置属性的值qDebug()<<"userName1:"<getUserName();my->setProperty("userName", "linux");//输出属性的值&#xff0c;这里使用了QObject类的property函数&#xff0c;他返回的值类型为QVariantqDebug()<<"userName2:"<property("userName").toString();
}Widget::~Widget()
{delete ui;
}void Widget::userChanged(QString userName)
{qDebug()<<"user changed:"<}