QT属性 - 语法糖或开发工具

qdo*_*dot 5 qt properties metaclass

我相信你们所有人都在那一点 - 定义一个Q_OBJECT携带大量的Q_PROPERTIES,都有相当琐碎的访问者:

class ORM_Customer : public QDjangoModel
{
    Q_OBJECT  

    Q_PROPERTY(QString firstname READ firstname WRITE setFirstname)
    Q_PROPERTY(QString lastname  READ lastname  WRITE setLastname)
    Q_PROPERTY(QString phone     READ phone     WRITE setPhone)

    Q_PROPERTY(QString address1  READ address1  WRITE setAddress1)
    Q_PROPERTY(QString address2  READ address2  WRITE setAddress2)
    Q_PROPERTY(QString houseno   READ houseno   WRITE setHouseno)
    Q_PROPERTY(QString postcode  READ postcode  WRITE setPostcode)
[... snip ...]
}
Run Code Online (Sandbox Code Playgroud)

有大量的访问者看起来像这样:

QString ORM_Customer::firstname() const { return m_firstname; }
QString ORM_Customer::lastname() const  { return m_lastname; }

void ORM_Customer::setFirstname(QString &n) { m_firstname = n; }
void ORM_Customer::setLastname(QString &n)  { m_lastname  = n; }
Run Code Online (Sandbox Code Playgroud)

鉴于QDjangoModel使用MetaObject内省,我不能在这里依赖动态属性(此外,我喜欢静态属性) - 问题是,是否有任何工具可以节省我的手工劳动?

Qt Creator似乎没有选择只声明和定义一些默认访问器及其各自的私有变量..还有别的吗?它肯定一直困扰着更多的开发人员,而不仅仅是我自己.

或许也有其他人使用的另一种发展模式?

Jon*_*Dee 3

我不知道有什么工具,抱歉。但当 Qt 5.1 准备就绪时,也许您会对它感到满意,因为它扩展了“moc”编译器。请参阅Qt 5.1 功能列表中的“基本模块 -> moc”部分:

Q_PROPERTY: MEMBER 中的新关键字让您可以将属性绑定到类成员,而无需使用 getter 或 setter。