<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #(57):可視化顯示數據庫數據 前面我們用了兩個章節介紹了 Qt 提供的兩種操作數據庫的方法。顯然,使用`QSqlQuery`的方式更靈活,功能更強大,而使用`QSqlTableModel`則更簡單,更方便與 model/view 結合使用(數據庫應用很大一部分就是以表格形式顯示出來,這正是 model/view 的強項)。本章我們簡單介紹使用`QSqlTableModel`顯示數據的方法。當然,我們也可以選擇使用`QSqlQuery`獲取數據,然后交給 view 顯示,而這需要自己給 model 提供數據。鑒于我們前面已經詳細介紹過如何使用自定義 model 以及如何使用`QTableWidget`,所以我們這里不再詳細說明這一方法。 我們還是使用前面一直在用的 student 表,直接來看代碼: ~~~ int main(int argc, char *argv[]) { QApplication a(argc, argv); if (connect("demo.db")) { QSqlTableModel *model = new QSqlTableModel; model->setTable("student"); model->setSort(1, Qt::AscendingOrder); model->setHeaderData(1, Qt::Horizontal, "Name"); model->setHeaderData(2, Qt::Horizontal, "Age"); model->select(); QTableView *view = new QTableView; view->setModel(model); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setSelectionBehavior(QAbstractItemView::SelectRows); // view->setColumnHidden(0, true); view->resizeColumnsToContents(); view->setEditTriggers(QAbstractItemView::NoEditTriggers); QHeaderView *header = view->horizontalHeader(); header->setStretchLastSection(true); view->show(); } else { return 1; } return a.exec(); } ~~~ 這里的`connect()`函數還是我們前面使用過的,我們主要關注剩下的代碼。 正如[前一章](http://www.devbean.net/2013/06/qt-study-road-2-sql-model/)的代碼所示,我們在`main()`函數中創建了`QSqlTableModel`對象,使用 student 表。student 表有三列:id,name 和 age,我們選擇按照 name 排序,使用`setSort()`函數達到這一目的。然后我們設置每一列的列頭。這里我們只使用了后兩列,第一列沒有設置,所以依舊顯示為列名 id。 在設置好 model 之后,我們又創建了`QTableView`對象作為視圖。注意這里的設置:單行選擇,按行選擇。`resizeColumnsToContents()`說明每列寬度適配其內容;`setEditTriggers()`則禁用編輯功能。最后,我們設置最后一列要充滿整個窗口。我們的代碼中有一行注釋,設置第一列不顯示。由于我們使用了`QSqlTableModel`方式,不能按列查看,所以我們在視圖級別上面做文章:將不想顯示的列隱藏掉。 接下來運行代碼即可看到效果: [![](https://box.kancloud.cn/2015-12-29_5682326d58b48.png)](http://files.devbean.net/images/2013/06/sql-model-view.png) 如果看到代碼中很多“魔術數字”,更好的方法是,使用一個枚舉將這些魔術數字隱藏掉,這也是一種推薦的方式: ~~~ enum ColumnIndex { Column_ID = 0, Column_Name = 1, Column_Age = 2 }; int main(int argc, char *argv[]) { QApplication a(argc, argv); if (connect("demo.db")) { QSqlTableModel *model = new QSqlTableModel; model->setTable("student"); model->setSort(Column_Name, Qt::AscendingOrder); model->setHeaderData(Column_Name, Qt::Horizontal, "Name"); model->setHeaderData(Column_Age, Qt::Horizontal, "Age"); model->select(); QTableView *view = new QTableView; view->setModel(model); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setSelectionBehavior(QAbstractItemView::SelectRows); view->setColumnHidden(Column_ID, true); view->resizeColumnsToContents(); view->setEditTriggers(QAbstractItemView::NoEditTriggers); QHeaderView *header = view->horizontalHeader(); header->setStretchLastSection(true); view->show(); } else { return 1; } return a.exec(); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看