2011-02-06 17 views
9

Tôi muốn đính kèm ý kiến ​​của Doxygen vào Q_PROPERTY của mình.Làm thế nào để doxygen bình luận Qt tài sản?

Ví dụ:

song.h

class Song : public QObject 
{ 
    Q_OBJECT 

private: 
    Q_PROPERTY(QString title READ title WRITE setTitle); 
    QString _title; 

public: 
    QString title() const; 
    void setTitle(const QString& value); 
}; 

song.cpp

#include "song.h" 

Song::Song(QObject *parent) : 
    QObject(parent) 
{ 
} 

QString Song::title() const { return _title; } 

void Song::setTitle(const QString &value) { _title = value; } 

Làm thế nào tôi có thể nói Doxygen tiêu đề đó là một tài sản trong hệ thống Qt Meta-Object và danh hiệu() và setTitle() là các hàm truy cập? Tôi muốn đạt được kết quả tương tự như this.

Trả lời

12

Tôi cuối cùng đã tìm được cách để thực hiện việc này.

  • Trong file nguồn:

    /** 
    * @brief The name of the user. 
    * @accessors name(), setName() 
    */ 
    Q_PROPERTY(QString name READ name WRITE setName) 
    
  • Trong Doxyfile:

    ALIASES = "accessors=\par Accessors:\n" 
    

Những gì tôi đã làm là xác định an alias tên "accessors" mà sẽ tạo ra một paragraph với tiêu đề "Accessors:" theo sau là các phương thức được tham chiếu.

Đây là những gì nó trông giống như trong tài liệu:

enter image description here


Mẹo: nếu tên của tài sản là giống như các phương pháp cho việc đọc tài sản, bạn có thể muốn đặt trước tên của người truy cập trong tài liệu theo '%' (nếu không, người truy cập sẽ được hiển thị dưới dạng liên kết trỏ đến chính nó):

/** 
* ... 
* @accessors %name(), setName() 
* ... 
*/ 
2

Các bình luận doxygen trong qobject.cpp cho tài sản objectName bắt đầu với "\ tài sản" tag:

/*! 
    \property QObject::objectName 

    \brief the name of this object 

    You can find an object by name (and type) using findChild(). You can 
    find a set of objects with findChildren(). 

    \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 5 

    By default, this property contains an empty string. 

    \sa metaObject(), QMetaObject::className() 
*/ 

Bạn đã cố gắng sử dụng nó? Nếu nó không làm việc ra khỏi hộp, tôi sẽ cố gắng tìm hiểu cách Qt tạo ra tài liệu của nó - có thể bạn cần một số macro/bí danh trong cấu hình doxygen.

+0

Qt không sử dụng doxygen nhưng qdoc để tạo tài liệu của nó, nhưng doxygen cố gắng duy trì tương thích qdoc hợp lý. –

12

doxygen hỗ trợ các thuộc tính Qt ngoài hộp. Chỉ cần thêm một chú thích tài liệu phía trên khai báo thuộc tính, và bạn sẽ thấy một "thuộc tính" trong đầu ra doxygen.

Xin lưu ý rằng chức năng truy cập sẽ được ghi chép riêng biệt, nếu chúng cũng có nhận xét về tài liệu. Do đó, bạn cần xóa các nhận xét tài liệu từ các hàm truy cập này, nếu bạn muốn loại bỏ các tài liệu này trong tài liệu được tạo ra.