亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qsqltablemodel.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    if (orientation == Qt::Vertical && role == Qt::DisplayRole) {        switch (d->strategy) {        case OnFieldChange:        case OnRowChange:            if (d->insertIndex == section)                return QLatin1String("*");            break;        case OnManualSubmit:            QSqlTableModelPrivate::Op op = d->cache.value(section).op;            if (op == QSqlTableModelPrivate::Insert)                return QLatin1String("*");            else if (op == QSqlTableModelPrivate::Delete)                return QLatin1String("!");            break;        }    }    return QSqlQueryModel::headerData(section, orientation, role);}/*!    Returns true if the value at the index \a index is dirty, otherwise false.    Dirty values are values that were modified in the model    but not yet written into the database.    If \a index is invalid or points to a non-existing row, false is returned.*/bool QSqlTableModel::isDirty(const QModelIndex &index) const{    Q_D(const QSqlTableModel);    if (!index.isValid())        return false;    switch (d->strategy) {        case OnFieldChange:            return false;        case OnRowChange:            return index.row() == d->editIndex && d->editBuffer.value(index.column()).isValid();        case OnManualSubmit: {            const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());            return row.op == QSqlTableModelPrivate::Insert                   || row.op == QSqlTableModelPrivate::Delete                   || (row.op == QSqlTableModelPrivate::Update                       && row.rec.value(index.column()).isValid());        }    }    return false;}/*!    Sets the data for the item \a index for the role \a role to \a    value. Depending on the edit strategy, the value might be applied    to the database at once or cached in the model.    Returns true if the value could be set or false on error, for    example if \a index is out of bounds.    \sa editStrategy(), data(), submit(), submitAll(), revertRow()*/bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role){    Q_D(QSqlTableModel);    if (role != Qt::EditRole)        return QSqlQueryModel::setData(index, value, role);    if (!index.isValid() || index.column() >= d->rec.count() || index.row() >= rowCount())        return false;    bool isOk = true;    switch (d->strategy) {    case OnFieldChange: {        if (index.row() == d->insertIndex) {            d->editBuffer.setValue(index.column(), value);            return true;        }        d->clearEditBuffer();        d->editBuffer.setValue(index.column(), value);        isOk = updateRowInTable(index.row(), d->editBuffer);        if (isOk)            select();        break; }    case OnRowChange:        if (index.row() == d->insertIndex) {            d->editBuffer.setValue(index.column(), value);            return true;        }        if (d->editIndex != index.row()) {            if (d->editIndex != -1)                submit();            d->clearEditBuffer();        }        d->editBuffer.setValue(index.column(), value);        d->editIndex = index.row();        emit dataChanged(index, index);        break;    case OnManualSubmit: {        QSqlTableModelPrivate::ModifiedRow &row = d->cache[index.row()];        if (row.op == QSqlTableModelPrivate::None) {            row.op = QSqlTableModelPrivate::Update;            row.rec = d->rec;        }        row.rec.setValue(index.column(), value);        emit dataChanged(index, index);        break; }    }    return isOk;}/*!    This function simply calls QSqlQueryModel::setQuery(\a query).    You should normally not call it on a QSqlTableModel. Instead, use    setTable(), setSort(), setFilter(), etc., to set up the query.    \sa selectStatement()*/void QSqlTableModel::setQuery(const QSqlQuery &query){    QSqlQueryModel::setQuery(query);}/*!    Updates the given \a row in the currently active database table    with the specified \a values. Returns true if successful; otherwise    returns false.    This is a low-level method that operates directly on the database    and should not be called directly. Use setData() to update values.    The model will decide depending on its edit strategy when to modify    the database.    Note that only values that have the generated-flag set are updated.    The generated-flag can be set with QSqlRecord::setGenerated() and    tested with QSqlRecord::isGenerated().    \sa QSqlRecord::isGenerated(), setData()*/bool QSqlTableModel::updateRowInTable(int row, const QSqlRecord &values){    Q_D(QSqlTableModel);    QSqlRecord rec(values);    emit beforeUpdate(row, rec);    const QSqlRecord whereValues = d->primaryValues(row);    bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries);    QString stmt = d->db.driver()->sqlStatement(QSqlDriver::UpdateStatement, d->tableName,                                                rec, prepStatement);    QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement, d->tableName,                                                 whereValues, prepStatement);    if (stmt.isEmpty() || where.isEmpty() || row < 0 || row >= rowCount()) {        d->error = QSqlError(QLatin1String("No Fields to update"), QString(),                                 QSqlError::StatementError);        return false;    }    stmt.append(QLatin1Char(' ')).append(where);    return d->exec(stmt, prepStatement, rec, whereValues);}/*!    Inserts the values \a values into the currently active database table.    This is a low-level method that operates directly on the database    and should not be called directly. Use insertRow() and setData()    to insert values. The model will decide depending on its edit strategy    when to modify the database.    Returns true if the values could be inserted, otherwise false.    Error information can be retrieved with \l lastError().    \sa lastError(), insertRow(), insertRows()*/bool QSqlTableModel::insertRowIntoTable(const QSqlRecord &values){    Q_D(QSqlTableModel);    QSqlRecord rec = values;    emit beforeInsert(rec);    bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries);    QString stmt = d->db.driver()->sqlStatement(QSqlDriver::InsertStatement, d->tableName,                                                rec, prepStatement);    return d->exec(stmt, prepStatement, rec);}/*!    Deletes the given \a row from the currently active database table.    This is a low-level method that operates directly on the database    and should not be called directly. Use removeRow() or removeRows()    to delete values. The model will decide depending on its edit strategy    when to modify the database.    Returns true if the row was deleted; otherwise returns false.    \sa removeRow(), removeRows()*/bool QSqlTableModel::deleteRowFromTable(int row){    Q_D(QSqlTableModel);    emit beforeDelete(row);    QSqlRecord rec = d->primaryValues(row);    bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries);    QString stmt = d->db.driver()->sqlStatement(QSqlDriver::DeleteStatement, d->tableName,                                                QSqlRecord(), prepStatement);    QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement, d->tableName,                                                rec, prepStatement);    if (stmt.isEmpty() || where.isEmpty()) {        d->error = QSqlError(QLatin1String("Unable to delete row"), QString(),                             QSqlError::StatementError);        return false;    }    stmt.append(QLatin1Char(' ')).append(where);    return d->exec(stmt, prepStatement, rec);}/*!    Submits all pending changes and returns true on success.    Returns false on error, detailed error information can be    obtained with lastError().    Note: In OnManualSubmit mode, already submitted changes won't    be cleared from the cache when submitAll() fails. This allows    transactions to be rolled back and resubmitted again without    losing data.    \sa revertAll(), lastError()*/bool QSqlTableModel::submitAll(){    Q_D(QSqlTableModel);    switch (d->strategy) {    case OnFieldChange:        if (d->insertIndex == -1)            return true;        // else fall through    case OnRowChange:        if (d->editBuffer.isEmpty())            return true;        if (d->insertIndex != -1) {            if (!insertRowIntoTable(d->editBuffer))                return false;        } else {            if (!updateRowInTable(d->editIndex, d->editBuffer))                return false;        }        d->clearEditBuffer();        d->editIndex = -1;        d->insertIndex = -1;        return select();    case OnManualSubmit:        for (QSqlTableModelPrivate::CacheMap::ConstIterator it = d->cache.constBegin();             it != d->cache.constEnd(); ++it) {            switch (it.value().op) {            case QSqlTableModelPrivate::Insert:                if (!insertRowIntoTable(it.value().rec))                    return false;                break;            case QSqlTableModelPrivate::Update:                if (!updateRowInTable(it.key(), it.value().rec))                    return false;                break;            case QSqlTableModelPrivate::Delete:                if (!deleteRowFromTable(it.key()))                    return false;                break;            case QSqlTableModelPrivate::None:                Q_ASSERT_X(false, "QSqlTableModel::submitAll()", "Invalid cache operation");                break;            }        }        d->cache.clear();        return select();    }    return false;}/*!    This reimplemented slot is called by the item delegates when the    user stopped editing the current row.    Submits the currently edited row if the model's strategy is set    to OnRowChange or OnFieldChange. Does nothing for the OnManualSubmit    strategy.    Use submitAll() to submit all pending changes for the    OnManualSubmit strategy.    Returns true on success; otherwise returns false. Use lastError()    to query detailed error information.    \sa revert(), revertRow(), submitAll(), revertAll(), lastError()*/bool QSqlTableModel::submit(){    Q_D(QSqlTableModel);    if (d->strategy == OnRowChange || d->strategy == OnFieldChange)        return submitAll();    return true;}/*!    This reimplemented slot is called by the item delegates when the    user canceled editing the current row.    Reverts the changes if the model's strategy is set to    OnRowChange. Does nothing for the other edit strategies.    Use revertAll() to revert all pending changes for the    OnManualSubmit strategy or revertRow() to revert a specific row.    \sa submit(), submitAll(), revertRow(), revertAll()*/void QSqlTableModel::revert(){    Q_D(QSqlTableModel);    if (d->strategy == OnRowChange)        revertAll();}/*!    \enum QSqlTableModel::EditStrategy    This enum type describes which strategy to choose when editing values in the database.    \value OnFieldChange  All changes to the model will be applied immediately to the database.    \value OnRowChange  Changes to a row will be applied when the user selects a different row.    \value OnManualSubmit  All changes will be cached in the model until either submitAll()                           or revertAll() is called.    Note: To prevent inserting only partly initialized rows into the database,    \c OnFieldChange will behave like \c OnRowChange for newly inserted rows.    \sa setEditStrategy()*//*!    Sets the strategy for editing values in the database to \a    strategy.    This will revert any pending changes.    \sa editStrategy(), revertAll()*/void QSqlTableModel::setEditStrategy(EditStrategy strategy){    Q_D(QSqlTableModel);    revertAll();    d->strategy = strategy;}/*!    Returns the current edit strategy.    \sa setEditStrategy()*/QSqlTableModel::EditStrategy QSqlTableModel::editStrategy() const{    Q_D(const QSqlTableModel);    return d->strategy;}/*!    Reverts all pending changes.    \sa revert(), revertRow(), submitAll()*/void QSqlTableModel::revertAll(){    Q_D(QSqlTableModel);    switch (d->strategy) {    case OnFieldChange:        break;    case OnRowChange:        if (d->editIndex != -1)            revertRow(d->editIndex);        else if (d->insertIndex != -1)            revertRow(d->insertIndex);        break;    case OnManualSubmit:        while (!d->cache.isEmpty())            revertRow(d->cache.constBegin().key());        break;    }}/*!    Reverts all changes for the specified \a row.    \sa revert(), revertAll(), submit(), submitAll()*/void QSqlTableModel::revertRow(int row){    if (row < 0)        return;    Q_D(QSqlTableModel);    switch (d->strategy) {    case OnFieldChange:        break;    case OnRowChange: {        if (d->editIndex == row) {            d->editBuffer.clear();            int oldIndex = d->editIndex;            d->editIndex = -1;            emit dataChanged(createIndex(oldIndex, 0), createIndex(oldIndex, columnCount()));        } else if (d->insertIndex == row) {            d->revertInsertedRow();        }        break; }    case OnManualSubmit:        d->revertCachedRow(row);        break;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av在线网| 亚洲视频一区二区在线观看| 91日韩一区二区三区| 国产精品一级二级三级| 极品瑜伽女神91| 美日韩一区二区三区| 免费高清视频精品| 久久99国产精品成人| 国产一区二区三区蝌蚪| 黑人精品欧美一区二区蜜桃| 国产精品77777| 99精品国产91久久久久久| 大桥未久av一区二区三区中文| 成人在线视频一区二区| 成人91在线观看| 欧美性感一区二区三区| 欧美日韩激情一区| 精品国产乱码久久| 国产精品视频免费看| 亚洲免费av观看| 日本亚洲欧美天堂免费| 久久激情综合网| 本田岬高潮一区二区三区| 色呦呦一区二区三区| 欧美精品aⅴ在线视频| 精品国产91乱码一区二区三区 | 欧美日韩高清影院| 7777精品伊人久久久大香线蕉最新版| 56国语精品自产拍在线观看| 91丨九色丨尤物| 欧美日韩国产一区| 久久午夜羞羞影院免费观看| 国产精品丝袜一区| 亚洲成在人线在线播放| 久久精品国产亚洲aⅴ| 国产成人av电影在线观看| 成人黄色777网| 欧美日韩一级视频| 久久久久久久久久久久电影| 中文字幕一区二区三区蜜月| 亚洲图片欧美综合| 国产在线播放一区| 色婷婷狠狠综合| 久久综合九色综合欧美就去吻 | aaa亚洲精品| 制服丝袜一区二区三区| 国产精品毛片高清在线完整版| 一区二区三区精密机械公司| 狠狠色综合播放一区二区| 色婷婷av一区二区三区gif| 欧美videos大乳护士334| 亚洲欧美日韩综合aⅴ视频| 麻豆精品国产传媒mv男同| 99久久精品国产导航| 欧美岛国在线观看| 一区二区欧美精品| 成人黄页毛片网站| 欧美成人一区二区三区在线观看| 亚洲日本青草视频在线怡红院| 免费人成网站在线观看欧美高清| 91影院在线免费观看| 久久久久国产精品厨房| 日本aⅴ精品一区二区三区| 色婷婷久久综合| 国产精品久久毛片a| 国产在线视频不卡二| 欧美一区二区三区视频免费| 成人免费在线播放视频| 成人免费高清视频在线观看| 欧美成人精品福利| 日本成人在线不卡视频| 在线日韩av片| 亚洲精品免费电影| 91香蕉视频在线| 欧美国产乱子伦| 国产精品一区二区不卡| 欧美精品一区二区在线观看| 日韩精品久久久久久| 欧美日韩和欧美的一区二区| 一区二区三区在线视频观看58| 成人免费视频一区| 国产精品美女一区二区在线观看| 国产激情一区二区三区四区| 26uuu色噜噜精品一区二区| 精品制服美女丁香| 欧美精品一区二区在线观看| 激情欧美一区二区| 日本一区二区免费在线观看视频 | 日韩成人av影视| 555夜色666亚洲国产免| 午夜激情一区二区| 69堂成人精品免费视频| 麻豆久久久久久久| 久久综合久久综合亚洲| 国产精品99久久久久久似苏梦涵 | 精品久久久久久久久久久久久久久 | 色婷婷久久99综合精品jk白丝 | 欧美性猛片aaaaaaa做受| 亚洲大型综合色站| 欧美一区二区三区在线观看视频| 午夜精品福利一区二区三区av| 91麻豆精品国产| 国产一区免费电影| 国产精品久久久久影院老司| 色综合色狠狠综合色| 日韩av电影一区| 国产日韩欧美综合一区| 91日韩在线专区| 秋霞国产午夜精品免费视频| www国产亚洲精品久久麻豆| 成人激情动漫在线观看| 五月综合激情婷婷六月色窝| 日韩精品中文字幕一区| 成人福利视频网站| 午夜免费久久看| 国产欧美一区视频| 欧美日韩久久一区二区| 国产不卡视频在线播放| 亚洲高清视频中文字幕| 久久精品免视看| 欧美在线观看视频在线| 国产精品综合在线视频| 亚洲香肠在线观看| 国产欧美一二三区| 欧美高清视频www夜色资源网| 国产一区二区网址| 五月综合激情网| 亚洲视频在线观看一区| 久久一留热品黄| 欧美老女人在线| 91女厕偷拍女厕偷拍高清| 国产精品一区专区| 日韩综合一区二区| 一区二区三区 在线观看视频| 久久久久久久久久久久久夜| 欧美日韩成人综合天天影院| 成人的网站免费观看| 国产一区二区三区在线观看精品 | 欧美亚洲一区二区在线| 国产成人av网站| 精品一区二区三区视频 | 精品成人a区在线观看| 欧美网站一区二区| 91视频91自| 丁香五精品蜜臀久久久久99网站| 久久疯狂做爰流白浆xx| 亚洲v精品v日韩v欧美v专区| 亚洲猫色日本管| 亚洲欧美日韩久久| 中文字幕一区二区三区视频| 国产精品久久久久一区二区三区| 欧美不卡一区二区三区| 日韩视频一区二区三区在线播放| 欧美日韩在线直播| 欧美日韩综合色| 欧美日本韩国一区二区三区视频| 91国内精品野花午夜精品| 91日韩精品一区| 91偷拍与自偷拍精品| aaa欧美色吧激情视频| 97精品国产97久久久久久久久久久久| 国产精品一区二区在线观看不卡 | 成人av午夜影院| 99久久久国产精品| 一本大道av伊人久久综合| 欧美图片一区二区三区| 欧美日韩免费一区二区三区视频 | 国产综合色视频| 丁香婷婷综合激情五月色| 成人性色生活片| 色综合久久久久网| 欧美日韩一区不卡| 欧美情侣在线播放| 欧美成人精精品一区二区频| 精品日韩在线一区| 中文字幕精品在线不卡| 亚洲欧美一区二区三区极速播放 | 中文字幕精品三区| 国产精品国产三级国产aⅴ无密码| 亚洲欧洲日韩女同| 亚洲成人免费影院| 久久国产生活片100| 成人午夜视频福利| 欧美久久高跟鞋激| 久久免费的精品国产v∧| 国产精品乱码人人做人人爱| 亚洲在线免费播放| jvid福利写真一区二区三区| 在线观看日韩毛片| 欧美一区二区三区免费大片 | 精品国产乱码91久久久久久网站| 国产亚洲一二三区| 亚洲综合丁香婷婷六月香| 国内精品国产成人国产三级粉色| www.av精品| 日韩欧美一二区| 亚洲综合在线五月| 成人中文字幕合集| 日韩一区二区影院| 亚洲欧美aⅴ...|