Q_PROPERTY 是Qt 框架中的一个宏,用于在类中声明一个属性(property)。这个属性不仅可以在代码中像类的普通成员一样被访问,还可以通过 Qt 的元对象系统(Meta-Object System)进行反射式访问,比如通过 QObject 的 property() 和setProperty() 方法。此外,这些属性还可以在 Qt Designer 和 QML 中被访问和编辑,极大...
#include<QMetaProperty>#include<QVariant>#include"mystudent.h"MyStudent::MyStudent(QObject*parent) : QObject(parent){}QStringMyStudent::getId() const{return m_id;}voidMyStudent::setId(constQString&id){m_id = id;}QStringMyStudent::getName() const{return m_name;}voidMyStudent::setName...
使用setProperty()和property()可以设置和获取由QPROPERTY宏包含的属性。 最后就运行一下程序,体会下Q_PROPERTY的用法吧。
3.设置属性值 this->setProperty("size",QSize(200,200)); 原文链接:Qt笔记(六十一)之Qt属性系统Q_PROPERTY_我是黄同学的博客-CSDN博客
student.setProperty("id", QVariant("2")); Q_ASSERT("2"==student.getId()); student.setSex("Woman"); Q_ASSERT(student.getSex()==MyStudent::Woman); } 使用setProperty()和property()可以设置和获取由QPROPERTY宏包含的属性。 最后就运行一下程序,体会下Q_PROPERTY的用法吧。
test->setProperty("enabled", true); //设置属性--方法一 //test->setEnabled(true); //设置属性--方法二 QVariant v=test->property("enabled"); //返回属性值--方法一 //QVariant(bool, true) bool b=v.toBool(); //转化为bool类型
p->setProperty("enabled",true);qDebug() << t.isEnabled() << endl;qDebug() << p->property("enabled").toBool() << endl;returna.exec(); } 运行结果为: false false true true 这就充分说明了,如何使用QObject的设置和访问属性 === 另一个例子的分割线 === 接下来再看一个QT文档中的例...
当QObject::setProperty被调用以修改属性时,Qt 的元对象系统首先查找该属性对应的Q_PROPERTY宏声明。接着,它调用在宏中指定的 setter 方法来更新属性值。类似地,当使用QObject::property读取属性时,元对象系统会调用相应的 getter 方法。 这种机制确保了属性访问的一致性和类型安全,同时提供了灵活性,因为属性的读写...
test->setProperty("enabled",true);//test->setEnabled(true);//ok also workif(test->property("enabled").toBool()) ... Qt Creator Designer插件的 例子: 头文件中定义了一个minValue 的属性,如下: classBarRuler :publicQWidget { Q_OBJECT Q_...
test->setProperty("enabled", true); //test->setEnabled(true); //ok also work if(test->property("enabled").toBool()) ... 3、提升为自定义QWidget的例子: (1)头文件中定义了一个minValue 的属性,如下: class BarRuler : public QWidget{Q_OBJECTQ_PROPERTY(double minValue READ getMinValue...