En esta página

QSqlField Class

La clase QSqlField manipula los campos de las tablas y vistas de bases de datos SQL. Más...

Cabecera: #include <QSqlField>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql

Tipos Públicos

enum RequiredStatus { Required, Optional, Unknown }

Propiedades

Funciones públicas

(since 6.0) QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())
QSqlField(const QSqlField &other)
~QSqlField()
void clear()
QVariant defaultValue() const
bool isAutoValue() const
bool isGenerated() const
bool isNull() const
bool isReadOnly() const
bool isValid() const
int length() const
QMetaType metaType() const
QString name() const
int precision() const
QSqlField::RequiredStatus requiredStatus() const
void setAutoValue(bool autoVal)
void setDefaultValue(const QVariant &value)
void setGenerated(bool gen)
void setLength(int fieldLength)
void setMetaType(QMetaType type)
void setName(const QString &name)
void setPrecision(int precision)
void setReadOnly(bool readOnly)
void setRequired(bool required)
void setRequiredStatus(QSqlField::RequiredStatus required)
void setTableName(const QString &tableName)
void setValue(const QVariant &value)
(since 6.6) void swap(QSqlField &other)
QString tableName() const
QVariant value() const
bool operator!=(const QSqlField &other) const
QSqlField &operator=(const QSqlField &other)
bool operator==(const QSqlField &other) const

Descripción Detallada

QSqlField representa las características de una única columna en una tabla o vista de base de datos, como el tipo de datos y el nombre de la columna. Un campo también contiene el valor de la columna de la base de datos, que puede visualizarse o modificarse.

Los valores de los datos de campo se almacenan como QVariants. No está permitido utilizar un tipo incompatible. Por ejemplo:

    QSqlField field("age", QMetaType::fromType<int>());
    field.setValue(QPixmap());  // WRONG

Sin embargo, el campo intentará convertir ciertos tipos de datos al tipo de datos del campo siempre que sea posible:

    QSqlField field("age", QMetaType::fromType<int>());
    field.setValue(QString("123"));  // casts QString to int

Los objetos QSqlField rara vez se crean explícitamente en el código de la aplicación. Normalmente se accede a ellos indirectamente a través de QSqlRecords que ya contienen una lista de campos. Por ejemplo:

    QSqlQuery query;
    ...
    QSqlRecord record = query.record();
    QSqlField field = record.field("country");

Un objeto QSqlField puede proporcionar algunos metadatos sobre el campo, por ejemplo, su name(), variante metaType(), length(), precision(), defaultValue(), typeID(), y sus requiredStatus(), isGenerated() y isReadOnly(). Los datos del campo se pueden comprobar para ver si isNull(), y su value() recuperado. Al editar los datos se pueden establecer con setValue() o establecer a NULL con clear().

Véase también QSqlRecord.

Documentación de tipos de miembros

enum QSqlField::RequiredStatus

Especifica si el campo es obligatorio u opcional.

ConstanteValorDescripción
QSqlField::Required1El campo debe especificarse al insertar registros.
QSqlField::Optional0No es necesario especificar el campo al insertar registros.
QSqlField::Unknown-1El controlador de la base de datos no ha podido determinar si el campo es obligatorio u opcional.

Véase también requiredStatus.

Documentación de propiedades

[since 6.8] autoValue : bool

Si el valor es autogenerado por la base de datos, por ejemplo valores de clave primaria de autoincremento, este valor es true.

Nota: cuando se utiliza el controlador ODBC, debido a las limitaciones de la API ODBC, el campo isAutoValue() sólo se rellena en un QSqlField resultante de un QSqlRecord obtenido mediante la ejecución de una consulta SELECT. Es false en un QSqlField resultante de un QSqlRecord devuelto desde QSqlDatabase::record() o QSqlDatabase::primaryIndex().

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

bool isAutoValue() const
void setAutoValue(bool autoVal)

[since 6.8] defaultValue : QVariant

Esta propiedad contiene el valor por defecto para este campo. Sólo algunos controladores de bases de datos soportan esta propiedad. Actualmente son SQLite, PostgreSQL, Oracle y MySQL/MariaDB.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

QVariant defaultValue() const
void setDefaultValue(const QVariant &value)

[since 6.8] generated : bool

Esta propiedad contiene el estado generado. Si generated es false, no se generará SQL para este campo; de lo contrario, las clases Qt como QSqlQueryModel y QSqlTableModel generarán SQL para este campo.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

bool isGenerated() const
void setGenerated(bool gen)

[since 6.8] length : int

Esta propiedad contiene la longitud del campo.

Si el valor es negativo, significa que la información no está disponible en la base de datos. En el caso de las cadenas, es el número máximo de caracteres que puede contener la cadena; el significado varía para otros tipos.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

int length() const
void setLength(int fieldLength)

[since 6.8] metaType : QMetaType

Esta propiedad contiene el tipo de campo almacenado en la base de datos. Tenga en cuenta que el valor real puede tener un tipo diferente, los valores numéricos que son demasiado grandes para almacenarse en un long int o double se almacenan normalmente como cadenas para evitar la pérdida de precisión.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

QMetaType metaType() const
void setMetaType(QMetaType type)

Véase también QSqlDatabase::numericalPrecisionPolicy.

name : QString

Esta propiedad contiene el nombre del campo. Puede ser el nombre de la columna o un alias dado por el usuario.

Funciones de acceso:

QString name() const
void setName(const QString &name)

[since 6.8] precision : int

Esta propiedad contiene la precisión del campo; sólo es significativa para los tipos numéricos.

Si el valor devuelto es negativo, significa que la información no está disponible en la base de datos.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

int precision() const
void setPrecision(int precision)

[since 6.8] readOnly : bool

Cuando esta propiedad es true entonces este QSqlField no puede ser modificado. Un campo de sólo lectura no puede tener su valor establecido con setValue() y no puede ser borrado a NULL con clear().

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

bool isReadOnly() const
void setReadOnly(bool readOnly)

[since 6.8] requiredStatus : RequiredStatus

Esta propiedad contiene el RequiredStatus del campo. Un INSERT fallará si un campo obligatorio no tiene un valor.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

QSqlField::RequiredStatus requiredStatus() const
void setRequiredStatus(QSqlField::RequiredStatus required)

Véase también RequiredStatus.

[since 6.8] tableName : QString

Esta propiedad contiene el tableName del campo.

Nota: Cuando se utiliza el controlador QPSQL, debido a limitaciones en la biblioteca libpq, el campo tableName() no se rellena en un QSqlField resultante de un QSqlRecord obtenido por QSqlQuery::record() de una consulta forward-only.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

QString tableName() const
void setTableName(const QString &tableName)

[since 6.8] value : QVariant

Esta propiedad contiene el value como QVariant

Establecer un value a un QSqlField de sólo lectura es un no-op. Si el tipo de datos de value difiere del tipo de datos actual del campo, se intenta convertirlo al tipo adecuado. Esto preserva el tipo de datos del campo en caso de asignación, por ejemplo, un QString a un tipo de datos entero.

Para establecer el valor en NULL, utilice clear().

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

QVariant value() const
void setValue(const QVariant &value)

Documentación de funciones miembro

[explicit, since 6.0] QSqlField::QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())

Construye un campo vacío llamado fieldName de tipo type en table.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.0.

QSqlField::QSqlField(const QSqlField &other)

Construye una copia de other.

[noexcept] QSqlField::~QSqlField()

Destruye el objeto y libera los recursos asignados.

void QSqlField::clear()

Borra el valor del campo y lo pone a NULL. Si el campo es de sólo lectura, no ocurre nada.

QVariant QSqlField::defaultValue() const

Establece el valor de defaultValue.

Nota: Función Getter para la propiedad defaultValue.

Véase también setDefaultValue().

bool QSqlField::isAutoValue() const

Devuelve el valor de autoValue.

Nota: Función Getter para la propiedad autoValue.

bool QSqlField::isGenerated() const

Devuelve el valor de generated.

Nota: Función Getter para la propiedad generated.

bool QSqlField::isNull() const

Devuelve true si el valor del campo es NULL; en caso contrario devuelve false.

Véase también value.

bool QSqlField::isReadOnly() const

Devuelve el valor de readOnly.

Nota: Función Getter para la propiedad readOnly.

bool QSqlField::isValid() const

Devuelve true si el tipo de variante del campo es válido; en caso contrario devuelve false.

int QSqlField::length() const

Devuelve el valor de la longitud.

Nota: Función Getter para la propiedad length.

Véase también setLength().

QMetaType QSqlField::metaType() const

Devuelve el valor de metaType.

Nota: Función Getter para la propiedad metaType.

Véase también setMetaType().

QString QSqlField::name() const

Devuelve el valor de nombre.

Nota: Función Getter para la propiedad name.

Véase también setName().

int QSqlField::precision() const

Devuelve el valor de la precisión.

Nota: Función Getter para la propiedad precisión.

Véase también setPrecision().

QSqlField::RequiredStatus QSqlField::requiredStatus() const

Devuelve el valor de requiredStatus.

Nota: Función Getter para la propiedad requiredStatus.

Véase también setRequiredStatus().

void QSqlField::setAutoValue(bool autoVal)

Establece autoValue en autoVal.

Nota: Función Setter para la propiedad autoValue.

Véase también isAutoValue().

void QSqlField::setDefaultValue(const QVariant &value)

Establece defaultValue en value.

Nota: Función Setter para la propiedad defaultValue.

Véase también defaultValue().

void QSqlField::setGenerated(bool gen)

Establece generated en gen.

Nota: Función Setter para la propiedad generated.

Véase también isGenerated().

void QSqlField::setLength(int fieldLength)

Establece length en fieldLength.

Nota: Función Setter para la propiedad length.

Véase también length().

void QSqlField::setMetaType(QMetaType type)

Establece metaType en type.

Nota: Función Setter para la propiedad metaType.

Véase también metaType().

void QSqlField::setName(const QString &name)

Establece name en name.

Nota: Función Setter para la propiedad name.

Véase también name().

void QSqlField::setPrecision(int precision)

Establece precision en precision.

Nota: Función Setter para la propiedad precision.

Véase también precision().

void QSqlField::setReadOnly(bool readOnly)

Establece readOnly en readOnly.

Nota: Función Setter para la propiedad readOnly.

Véase también isReadOnly().

void QSqlField::setRequired(bool required)

Establece el estado requerido de este campo en Required si required es verdadero; en caso contrario, lo establece en Optional.

Véase también requiredStatus.

void QSqlField::setRequiredStatus(QSqlField::RequiredStatus required)

Establece requiredStatus en required.

Nota: Función Setter para la propiedad requiredStatus.

Véase también requiredStatus().

void QSqlField::setTableName(const QString &tableName)

Establece tableName en tableName.

Nota: Función Setter para la propiedad tableName.

Véase también tableName().

void QSqlField::setValue(const QVariant &value)

Establece value en value.

Nota: Función Setter para la propiedad value.

Véase también value().

[noexcept, since 6.6] void QSqlField::swap(QSqlField &other)

Intercambia este campo con other. Esta operación es muy rápida y nunca falla.

Esta función se introdujo en Qt 6.6.

QString QSqlField::tableName() const

Devuelve el nombre de la tabla.

Nota: Función Getter para la propiedad tableName.

Véase también setTableName().

QVariant QSqlField::value() const

Devuelve el valor de value.

Nota: Función Getter para el valor de la propiedad.

Véase también setValue().

bool QSqlField::operator!=(const QSqlField &other) const

Devuelve true si el campo no es igual a other; en caso contrario devuelve false.

QSqlField &QSqlField::operator=(const QSqlField &other)

Establece el campo igual a other.

bool QSqlField::operator==(const QSqlField &other) const

Devuelve true si el campo es igual a other; en caso contrario devuelve false.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.