菜鸟解读qt源码----qsqlfield.h

#ifndef QSQLFIELD_H
#define QSQLFIELD_H
 
#include <QtCore/qvariant.h>
#include <QtCore/qstring.h>
// 这里的包含的头文件,都是小写的 q ,并且加上 .h ,这个和 QVariant 区别是什么?
QT_BEGIN_HEADER
 
QT_BEGIN_NAMESPACE
 
QT_MODULE(Sql)
 
class QSqlFieldPrivate;                       // h 文件中,尽量使用这种声明,而不使用 #include
 
class Q_SQL_EXPORT QSqlField
{
public:
    enum RequiredStatus { Unknown = -1, Optional = 0, Required = 1 };
// 状态都是用枚举类型的
    QSqlField(const QString& fieldName = QString(),
              QVariant::Type type = QVariant::Invalid);
// 无效的类型?
    QSqlField(const QSqlField& other);
    QSqlField& operator=(const QSqlField& other);
    bool operator==(const QSqlField& other) const;
inline bool operator!=(const QSqlField &other) const { return !operator==(other); }
// 对于运算符的继承!写 ui 很少自己写这些继承
    ~QSqlField();
 
void setValue(const QVariant& value);
//const ,能用 const 的都用上了 const
    inline QVariant value() const
{ return val; }
// 对于这种直接返回的都用 inline
    void setName(const QString& name);
    QString name() const;
    bool isNull() const;
    void setReadOnly(bool readOnly);
    bool isReadOnly() const;
    void clear();
    QVariant::Type type() const;
    bool isAutoValue() const;
 
    void setType(QVariant::Type type);
    void setRequiredStatus(RequiredStatus status);
    inline void setRequired(bool required)
    { setRequiredStatus(required ? Required : Optional); }
    void setLength(int fieldLength);
    void setPrecision(int precision);
    void setDefaultValue(const QVariant &value);
    void setSqlType(int type);
    void setGenerated(bool gen);
    void setAutoValue(bool autoVal);
 
    RequiredStatus requiredStatus() const;
    int length() const;
    int precision() const;
    QVariant defaultValue() const;
    int typeID() const;
    bool isGenerated() const;
    bool isValid() const;
 
#ifdef QT3_SUPPORT
    inline QT3_SUPPORT void setNull() { clear(); }
#endif
 
private:
void detach();
// 从对象组中分离对象??
    QVariant val;
    QSqlFieldPrivate* d;
};
 
#ifndef QT_NO_DEBUG_STREAM
Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlField &);
#endif
 
QT_END_NAMESPACE
 
QT_END_HEADER
 
#endif // QSQLFIELD_H

你可能感兴趣的:(源码,数据库,菜鸟,解读,qsqlfield)