• 6875阅读
  • 8回复

请教Q_PROPERTY宏用法问题 [复制链接]

上一主题 下一主题
离线zhangjh_sdu
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-11
— 本帖被 XChinux 执行加亮操作(2008-08-12) —
例如QCheckBox中定义了Q_PROPERTY(bool tristate READ isTristate WRITE setTristate),实现的时候:
void QCheckBox::setTristate(bool y)
{
    Q_D(QCheckBox);
    d->tristate = y;
}

bool QCheckBox::isTristate() const
{
    Q_D(const QCheckBox);
    return d->tristate;
}

不明白这里的Q_D是什么意思?!我自己定义的类该怎么正确用Q_PROPERTY宏?谢谢!
MFC QT混合编程
离线mumutouv

只看该作者 1楼 发表于: 2008-08-11
那是元数据对象里面的东西,就是说有moc预编译之后的东西
离线zhangjh_sdu
只看该作者 2楼 发表于: 2008-08-11
我如果想用Q_PROPERTY宏定义类的属性及其操作,该怎么做?函数实现时需要怎么处理?
MFC QT混合编程
离线foxyz

只看该作者 3楼 发表于: 2008-08-11
Q_D()
你是在看QT的源码阿?
离线zhangjh_sdu
只看该作者 4楼 发表于: 2008-08-11
引用第3楼foxyz于2008-08-11 13:10发表的  :
Q_D()
你是在看QT的源码阿?


呵呵,是因为我不知道Q_PROPERTY宏怎么用,就看了看QT相关的源码。关键是我怎么来用Q_PROPERTY宏?
MFC QT混合编程
离线mumutouv

只看该作者 5楼 发表于: 2008-08-11
Q_PROPERTY是属性,就是在用designer画控件的时候,然后选择里面属性啊,:-),这下知道怎么用了吧?
离线zhangjh_sdu
只看该作者 6楼 发表于: 2008-08-11
引用第5楼mumutouv于2008-08-11 14:30发表的  :
Q_PROPERTY是属性,就是在用designer画控件的时候,然后选择里面属性啊,:-),这下知道怎么用了吧?


这个我是知道的。
例如这样一个类的声明和实现:
class QItemGroup : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int mGroupType READ groupType WRITE setGroupType)

private:
    int mGroupType;
       
public:
    int groupType() const;
    void setGroupType(int groupType);
};
这里int mGroupType的定义是必须有的吗?Q_PROPERTY宏就是为了指明该类有int mGroupType 这样一个属性?没有其他功能?
MFC QT混合编程
离线mumutouv

只看该作者 7楼 发表于: 2008-08-11
我靠,当然有用了,这是最关键的啊,mGroupType用来存储属性值啊
离线zhangjh_sdu
只看该作者 8楼 发表于: 2008-08-11
引用第7楼mumutouv于2008-08-11 15:57发表的  :
我靠,当然有用了,这是最关键的啊,mGroupType用来存储属性值啊


那Q_PROPERTY(int mGroupType READ groupType WRITE setGroupType)就是为了说明该类有mGroupType 这样的一个属性?加与不加这个宏定义有什么区别?
MFC QT混合编程
快速回复
限100 字节
 
上一个 下一个