#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