真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Qt通用數(shù)據(jù)庫(kù)翻頁(yè)查詢(xún)?nèi)绾螌?shí)現(xiàn)

本篇內(nèi)容介紹了“Qt通用數(shù)據(jù)庫(kù)翻頁(yè)查詢(xún)?nèi)绾螌?shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出潮陽(yáng)免費(fèi)做網(wǎng)站回饋大家。

一、前言

在Qt與數(shù)據(jù)庫(kù)結(jié)合編程的過(guò)程中,記錄一多,基本上都需要用到翻頁(yè)查看記錄,翻頁(yè)有個(gè)好處就是可以減輕顯示數(shù)據(jù)的表格的壓力,不需要一次性將數(shù)據(jù)庫(kù)表的記錄全部顯示,也基本上沒(méi)有誰(shuí)在一頁(yè)上需要一次性顯示所有記錄,搜索引擎搜索出來(lái)的結(jié)果也基本上都是翻頁(yè)顯示的,那么問(wèn)題來(lái)了,有沒(méi)有一種通用的辦法可以只需要傳入表名和查詢(xún)條件自動(dòng)翻頁(yè)呢,答案是肯定的,Qt對(duì)數(shù)據(jù)庫(kù)操作的封裝也是相當(dāng)完美的,顯示也是如此,為此特意封裝成了一個(gè)類(lèi),直接用就行。

主要功能:

  1. 自動(dòng)按照設(shè)定的每頁(yè)多少行數(shù)據(jù)分頁(yè)

  2. 只需要傳入表名/字段集合/每頁(yè)行數(shù)/翻頁(yè)指示按鈕/文字指示標(biāo)簽

  3. 提供公共靜態(tài)方法綁定字段數(shù)據(jù)到下拉框

  4. 建議條件字段用數(shù)字類(lèi)型的主鍵,速度極快

  5. 增加線程查詢(xún)符合條件的記錄總數(shù),數(shù)據(jù)量巨大時(shí)候不會(huì)卡主界面

  6. 提供查詢(xún)結(jié)果返回信號(hào),包括當(dāng)前頁(yè)/總頁(yè)數(shù)/總記錄數(shù)/查詢(xún)用時(shí)

  7. 可設(shè)置所有列或者某一列對(duì)齊樣式例如居中或者右對(duì)齊

  8. 可設(shè)置增加一列,列的位置,標(biāo)題,寬度

  9. 可設(shè)置要查詢(xún)的字段集合

二、代碼思路

void DbPage::bindData(const QString &sql)
{
    queryModel->setQuery(sql, QSqlDatabase::database(connName));
    tableView->setModel(queryModel);

    //依次設(shè)置列標(biāo)題列寬
    int columnCount = tableView->model()->columnCount();
    int nameCount = columnNames.count();
    columnCount = columnCount > nameCount ? nameCount : columnCount;

    QList columnNames = this->columnNames;
    QList columnWidths = this->columnWidths;

    //根據(jù)設(shè)置添加新列,將對(duì)應(yīng)新列的標(biāo)題名稱(chēng)和寬度按照索引位置插
    if (insertColumnIndex >= 0) {
        columnCount++;
        columnNames.insert(insertColumnIndex, insertColumnName);
        columnWidths.insert(insertColumnIndex, insertColumnWidth);
        queryModel->insertColumn(insertColumnIndex);
    }

    //設(shè)置列標(biāo)題和列寬度
    for (int i = 0; i < columnCount; i++) {
        queryModel->setHeaderData(i, Qt::Horizontal, columnNames.at(i));
        tableView->setColumnWidth(i, columnWidths.at(i));
    }

    if (labPageCurrent != 0) {
        labPageCurrent->setText(QString("第 %1 頁(yè)").arg(pageCurrent));
    }

    if (labPageCount != 0) {
        labPageCount->setText(QString("共 %1 頁(yè)").arg(pageCount));
    }

    if (labResultCount != 0) {
        labResultCount->setText(QString("共 %1 條").arg(resultCount));
    }

    if (labResultCurrent != 0) {
        labResultCurrent->setText(QString("每頁(yè) %1 條").arg(resultCurrent));
    }

    if (labInfo != 0) {
        labInfo->setText(QString("共 %1 條  每頁(yè) %2 條  共 %3 頁(yè)  第 %4 頁(yè)").arg(resultCount).arg(resultCurrent).arg(pageCount).arg(pageCurrent));
    }

    //發(fā)送結(jié)果信號(hào)
    emit receivePage(pageCurrent, pageCount, resultCount, resultCurrent);
}

void DbPage::slot_receiveCount(quint32 count, double msec)
{
    if (labResult != 0) {
        labResult->setText(QString("查詢(xún)用時(shí) %1 秒").arg(QString::number(msec / 1000, 'f', 3)));
    }

    resultCount = count;

    int yushu = resultCount % resultCurrent;

    //不存在余數(shù),說(shuō)明是整行,例如300%5==0
    if (yushu == 0) {
        if (resultCount > 0 && resultCount < resultCurrent) {
            pageCount = 1;
        } else {
            pageCount = resultCount / resultCurrent;
        }
    } else {
        pageCount = (resultCount / resultCurrent) + 1;
    }

    //2014-10-9增加翻頁(yè)按鈕可用不可用處理,如果只有一頁(yè)數(shù)據(jù),則翻頁(yè)按鈕不可用
    if (pageCount <= 1) {
        btnFirst->setEnabled(false);
        btnLast->setEnabled(false);
        btnNext->setEnabled(false);
        btnPre->setEnabled(false);
    } else {
        btnFirst->setEnabled(true);
        btnLast->setEnabled(true);
        btnNext->setEnabled(true);
        btnPre->setEnabled(true);
    }

    tempSql = QString("select %1 from %2 %3 order by %4").arg(selectColumn).arg(tableName).arg(whereSql).arg(orderSql);
    sql = QString("%1 limit %2,%3;").arg(tempSql).arg(startIndex).arg(resultCurrent); //組織分頁(yè)SQL語(yǔ)句

    bindData(sql);
}

void DbPage::first()
{
    if (pageCount > 1) {
        startIndex = 0;
        pageCurrent = 1;
        sql = QString("%1 limit %2,%3;").arg(tempSql).arg(startIndex).arg(resultCurrent);
        bindData(sql);
        btnLast->setEnabled(true);
        btnNext->setEnabled(true);
    }

    btnFirst->setEnabled(false);
    btnPre->setEnabled(false);
}

void DbPage::previous()
{
    if (pageCurrent > 1) {
        pageCurrent--;
        startIndex -= resultCurrent;
        sql = QString("%1 limit %2,%3;").arg(tempSql).arg(startIndex).arg(resultCurrent);
        bindData(sql);
        btnLast->setEnabled(true);
        btnNext->setEnabled(true);
    }

    if (pageCurrent == 1) {
        btnFirst->setEnabled(false);
        btnPre->setEnabled(false);
    }
}

void DbPage::next()
{
    if (pageCurrent < pageCount) {
        pageCurrent++;
        startIndex += resultCurrent;
        sql = QString("%1 limit %2,%3;").arg(tempSql).arg(startIndex).arg(resultCurrent);
        bindData(sql);
        btnFirst->setEnabled(true);
        btnPre->setEnabled(true);
    }

    if (pageCurrent == pageCount) {
        btnLast->setEnabled(false);
        btnNext->setEnabled(false);
    }
}

void DbPage::last()
{
    if (pageCount > 0) {
        startIndex = (pageCount - 1) * resultCurrent;
        pageCurrent = pageCount;
        sql = QString("%1 limit %2,%3;").arg(tempSql).arg(startIndex).arg(resultCurrent);
        bindData(sql);
        btnFirst->setEnabled(true);
        btnPre->setEnabled(true);
    }

    btnLast->setEnabled(false);
    btnNext->setEnabled(false);
}

三、效果圖

Qt通用數(shù)據(jù)庫(kù)翻頁(yè)查詢(xún)?nèi)绾螌?shí)現(xiàn)

“Qt通用數(shù)據(jù)庫(kù)翻頁(yè)查詢(xún)?nèi)绾螌?shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


分享名稱(chēng):Qt通用數(shù)據(jù)庫(kù)翻頁(yè)查詢(xún)?nèi)绾螌?shí)現(xiàn)
本文路徑:http://weahome.cn/article/gopoig.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部