Spec-Zone.ru › Qt 5.6

Класс QSqlQueryModel

Класс QSqlQueryModel предоставляет модель данных только для чтения для наборов результатов SQL. Подробнее...

Заголовок: #include <QSqlQueryModel>
qmake: QT += sql
Наследует: QAbstractTableModel
Наследуется от:

QSqlTableModel

  • Список всех членов, включая наследуемые

Открытые функции

QSqlQueryModel(QObject *parent = Q_NULLPTR)
virtual ~QSqlQueryModel()
virtual void очистить()
QSqlError последняяОшибка() const
QSqlQuery запрос() const
QSqlRecord запись(int row) const
QSqlRecord запись() const
void установитьЗапрос(const QSqlQuery &query)
void установитьЗапрос(const QString &query, const QSqlDatabase &db = QSqlDatabase())

Переопределённые открытые функции

virtual bool можноЗагрузитьБольше(const QModelIndex &parent = QModelIndex()) const
virtual int количествоСтолбцов(const QModelIndex &index = QModelIndex()) const
virtual QVariant данные(const QModelIndex &item, int role = Qt::DisplayRole) const
virtual void загрузитьБольше(const QModelIndex &parent = QModelIndex())
virtual QVariant заголовокДанных(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
virtual bool вставитьСтолбцы(int column, int count, const QModelIndex &parent = QModelIndex())
virtual bool удалитьСтолбцы(int column, int count, const QModelIndex &parent = QModelIndex())
virtual int количествоСтрок(const QModelIndex &parent = QModelIndex()) const
virtual bool установитьЗаголовокДанных(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
  • 4 открытых функции, наследуемые от QAbstractTableModel
  • 39 открытых функций, наследуемых от QAbstractItemModel
  • 31 открытых функций, наследуемых от QObject

Защищённые функции

virtual QModelIndex индексВЗапросе(const QModelIndex &item) const
virtual void изменениеЗапроса()
void установитьПоследнююОшибка(const QSqlError &error)
  • 19 защищённых функций, наследуемых от QAbstractItemModel
  • 9 защищённых функций, наследуемых от QObject

Дополнительные наследуемые члены

  • 1 свойство, наследуемое от QObject
  • 2 публичных слотов, наследуемых от QAbstractItemModel
  • 1 публичный слот, наследуемый от QObject
  • 18 сигналов, наследуемых от QAbstractItemModel
  • 2 сигнала, наследуемых от QObject
  • 11 статических открытых членов, наследуемых от QObject
  • 1 защищённый слот, наследуемый от QAbstractItemModel

Подробное описание

Класс QSqlQueryModel предоставляет модель данных только для чтения для наборов результатов SQL.

QSqlQueryModel — это интерфейс высокого уровня для выполнения SQL-запросов и обработки набора результатов. Он построен поверх более низкоуровневого QSqlQuery и может использоваться для предоставления данных классам виджетов, таким как QTableView. Например:

    QSqlQueryModel *model = new QSqlQueryModel;
    model->setQuery("SELECT name, salary FROM employee");
    model->setHeaderData(0, Qt::Horizontal, tr("Name"));
    model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

    QTableView *view = new QTableView;
    view->setModel(model);
    view->show();

Мы устанавливаем запрос модели, а затем настраиваем метки, отображаемые в заголовке виджета.

QSqlQueryModel также может использоваться для программного доступа к базе данных без привязки к виджету:

    QSqlTableModel model;
    model.setTable("employee");
    model.select();
    int salary = model.record(4).value("salary").toInt();

Приведенный выше фрагмент кода извлекает поле salary из записи 4 в наборе результатов запроса SELECT * from employee. Предполагая, что salary — это столбец 2, мы можем переписать последнюю строку следующим образом:

    int salary = model.data(model.index(4, 2)).toInt();

Модель по умолчанию является только для чтения. Чтобы сделать её доступной для чтения и записи, необходимо создать подкласс и переопределить методы setData() и flags(). Другой вариант — использовать QSqlTableModel, который предоставляет модель чтения/записи, основанную на одной таблице базы данных.

Пример querymodel демонстрирует, как использовать QSqlQueryModel для отображения результатов запроса. Он также показывает, как создать подкласс QSqlQueryModel для настройки содержимого данных перед отображением пользователю и как создать модель чтения/записи на основе QSqlQueryModel.

Если база данных не возвращает количество выбранных строк в запросе, модель будет загружать строки по частям. Смотрите загрузитьБольше() для получения дополнительной информации.

См. также QSqlTableModel, QSqlRelationalTableModel, QSqlQuery, Модель/Представление и Пример Модели Запроса.

Документация по членам-функциям

QSqlQueryModel::QSqlQueryModel(QObject *parent = Q_NULLPTR)

Создаёт пустую модель QSqlQueryModel с указанным parent.

[virtual] QSqlQueryModel::~QSqlQueryModel()

Удаляет объект и освобождает выделенные ресурсы.

См. также очистить().

[virtual] bool QSqlQueryModel::можноЗагрузитьБольше(const QModelIndex &parent = QModelIndex()) const

Переопределено из QAbstractItemModel::canFetchMore().

Возвращает true если возможно прочитать больше строк из базы данных. Это касается только баз данных, которые не сообщают размер запроса (см. QSqlDriver::hasFeature()).

parent всегда должен быть недопустимым QModelIndex.

Эта функция была добавлена в Qt 4.1.

См. также загрузитьБольше().

[virtual] void QSqlQueryModel::очистить()

Очищает модель и освобождает любые захваченные ресурсы.

[virtual] int QSqlQueryModel::количествоСтолбцов(const QModelIndex &index = QModelIndex()) const

Переопределено из QAbstractItemModel::columnCount().

[virtual] QVariant QSqlQueryModel::данные(const QModelIndex &item, int role = Qt::DisplayRole) const

Переопределено из QAbstractItemModel::data().

Возвращает значение для указанного элемента и роли.

Если элемент находится за пределами границ или произошла ошибка, возвращается недействительный QVariant.

См. также lastError().

[virtual] void QSqlQueryModel::fetchMore(const QModelIndex &parent = QModelIndex())

Переопределено из QAbstractItemModel::fetchMore().

Загружает дополнительные строки из базы данных. Это затрагивает только базы данных, которые не сообщают размер запроса (см. QSqlDriver::hasFeature()).

Для принудительной загрузки всего набора результатов вы можете использовать следующее:

while (myModel->canFetchMore())
    myModel->fetchMore();

parent всегда должен быть недействительным QModelIndex.

Эта функция была введена в Qt 4.1.

См. также canFetchMore().

[virtual] QVariant QSqlQueryModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

Переопределено из QAbstractItemModel::headerData().

Возвращает данные заголовка для заданной роли в секции заголовка с указанной ориентацией.

См. также setHeaderData().

[virtual protected] QModelIndex QSqlQueryModel::indexInQuery(const QModelIndex &item) const

Возвращает индекс значения в наборе результатов базы данных для данного элемента в модели.

Возвращаемое значение идентично item, если не было вставлено, удалено или перемещено столбцов или строк.

Возвращает недействительный индекс модели, если item находится за пределами границ или если item не указывает на значение в наборе результатов.

См. также QSqlTableModel::indexInQuery(), insertColumns() и removeColumns().

[virtual] bool QSqlQueryModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Переопределено из QAbstractItemModel::insertColumns().

Вставляет count столбцов в модель в позиции column. Параметр parent всегда должен быть недействительным QModelIndex, так как модель не поддерживает отношения «родитель-потомок».

Возвращает true если column находится в пределах границ; в противном случае возвращает false.

По умолчанию вставленные столбцы пусты. Чтобы заполнить их данными, переопределите data() и обработайте каждый вставленный столбец отдельно:

QVariant MyModel::data(const QModelIndex &item, int role) const
{
    if (item.column() == m_specialColumnNo) {
        // handle column separately
    }
    return QSqlQueryModel::data(item, role);
}

См. также removeColumns().

QSqlError QSqlQueryModel::lastError() const

Возвращает информацию об последней ошибке, которая произошла в базе данных.

См. также setLastError() и query().

QSqlQuery QSqlQueryModel::query() const

Возвращает QSqlQuery, связанную с этой моделью.

См. также setQuery().

[virtual protected] void QSqlQueryModel::queryChange()

Эта виртуальная функция вызывается всякий раз, когда запрос изменяется. По умолчанию она ничего не делает.

query() возвращает новый запрос.

См. также query() и setQuery().

QSqlRecord QSqlQueryModel::record(int row) const

Возвращает запись, содержащую информацию о полях текущего запроса. Если row — индекс допустимой строки, запись будет заполнена значениями из этой строки.

Если модель не инициализирована, возвращается пустая запись.

См. также QSqlRecord::isEmpty().

QSqlRecord QSqlQueryModel::record() const

Это перегруженная функция.

Возвращает пустую запись, содержащую информацию о полях текущего запроса.

Если модель не инициализирована, возвращается пустая запись.

См. также QSqlRecord::isEmpty().

[virtual] bool QSqlQueryModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Переопределено из QAbstractItemModel::removeColumns().

Удаляет count столбцов из модели, начиная с позиции column. Параметр parent всегда должен быть недействительным QModelIndex, так как модель не поддерживает отношения «родитель-потомок».

Удаление столбцов фактически скрывает их. Это не влияет на базовый QSqlQuery.

Возвращает true если столбцы были удалены; в противном случае возвращает false.

[virtual] int QSqlQueryModel::rowCount(const QModelIndex &parent = QModelIndex()) const

Переопределено из QAbstractItemModel::rowCount().

Если база данных поддерживает возврат размера запроса (см. QSqlDriver::hasFeature()), возвращается количество строк текущего запроса. В противном случае возвращается количество строк, в настоящее время кэшированных на клиенте.

parent должен всегда быть недействительным QModelIndex.

Эта функция была введена в Qt 4.1.

См. также canFetchMore() и QSqlDriver::hasFeature().

[virtual] bool QSqlQueryModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)

Переопределено из QAbstractItemModel::setHeaderData().

Устанавливает заголовок для горизонтального заголовка для указанной роли в value. Это полезно, если модель используется для отображения данных в представлении (например, QTableView).

Возвращает true если orientation равен Qt::Horizontal и section относится к допустимой секции; в противном случае возвращает false.

Обратите внимание, что эта функция не может использоваться для изменения значений в базе данных, так как модель является только для чтения.

См. также headerData() и data().

[protected] void QSqlQueryModel::setLastError(const QSqlError &error)

Защищенная функция, которая позволяет производным классам установить значение последней ошибки, которая произошла в базе данных, в error.

См. также lastError().

void QSqlQueryModel::setQuery(const QSqlQuery &query)

Сбрасывает модель и устанавливает поставщика данных в заданный запрос. Обратите внимание, что запрос должен быть активным и не должен быть isForwardOnly().

lastError() может быть использована для получения подробной информации, если при установке запроса произошла ошибка.

Примечание: Вызов setQuery() удалит все вставленные столбцы.

См. также query(), QSqlQuery::isActive(), QSqlQuery::setForwardOnly() и lastError().

void QSqlQueryModel::setQuery(const QString &query, const QSqlDatabase &db = QSqlDatabase())

Это перегруженная функция.

Выполняет запрос query для заданного соединения базы данных db. Если база данных не указана (или база данных недействительна), используется по умолчанию.

lastError() может быть использована для получения подробной информации, если при установке запроса произошла ошибка.

Пример:

QSqlQueryModel model;
model.setQuery("select * from MyTable");
if (model.lastError().isValid())
    qDebug() << model.lastError();

См. также query(), queryChange() и lastError().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qsqlquerymodel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API