2012-09-25 106 views
5

tôi chắc chắn rằng tất cả các bạn đang ở thời điểm đó - xác định một Q_OBJECT mang theo một tấn Q_PROPERTIES, tất cả với accessors khá tầm thường:QT Properties - cú pháp đường hoặc công cụ phát triển

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 ...] 
} 

với một tấn accessors tất cả tìm kiếm như thế:

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; } 

cho rằng QDjangoModel sử dụng MetaObject mẫn, tôi không thể dựa vào tính chất năng động ở đây (bên cạnh đó, tôi thích tính chất tĩnh) - câu hỏi là, là có bất kỳ công cụ mà sẽ tiết kiệm cho tôi hướng dẫn lao động?

Trình tạo ảnh Qt dường như không có tùy chọn để chỉ khai báo và xác định một số trình truy cập mặc định và biến riêng tư tương ứng của chúng. Mọi thứ khác? Chắc chắn nó phải làm phiền nhiều nhà phát triển hơn là bản thân tôi.

Hoặc có lẽ chỉ có một mẫu phát triển khác mà người khác sử dụng?

+0

Vâng, điều đó luôn làm tôi phiền lòng. Q_PROPERTY luôn luôn đến với tôi như là đường. Bạn luôn có thể có một thành viên QVariantMap với các hàm get/set chung. Hoặc, nếu bạn thích, một 'enum' tùy chỉnh với một thành viên' QHash '. – Phlucious

+0

Trường hợp duy nhất tôi xem xét Q_PROPERTY là khi phát triển plugin cho Nhà thiết kế. – Phlucious

Trả lời

3

Tôi không biết một công cụ, xin lỗi. Nhưng có lẽ bạn sẽ hài lòng với Qt 5.1 khi nó đã sẵn sàng, bởi vì nó mở rộng trình biên dịch 'moc'. Xem phần "Mô-đun cần thiết -> moc" trong Qt 5.1 feature list:

Từ khóa mới trong Q_PROPERTY: THÀNH VIÊN cho phép bạn liên kết thuộc tính với thành viên nhóm mà không cần phải có người khởi động hoặc người đặt cược.