青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

zhonghua

C++博客 首頁 新隨筆 聯系 聚合 管理
  72 Posts :: 1 Stories :: 4 Comments :: 0 Trackbacks

    QSqlQueryModel類為SQL的結果集提供了一個只讀的數據模型,下面我們先利用這個類進行一個最簡單的操作.

常用函數

void QSqlQueryModel::setQuery ("SQL語句") // 執行SQL語句,此處還可以傳入QSqlQuery對象,此時可以利用QSqlQuery類的某些特性,如預操作等.

setHeaderData()     //設置水平頭標題

columnCount(); //獲得列數

columnCount(); //獲得列數

QSqlRecord QSqlQueryModel::record ( int row ) const //返回row行包含的信息,可訪問單條的記錄

QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() )  //返回指定的行和列的索引(index)

index.data()  //返回index索引的值

query() //返回與QSqlQuery相關的模型

  1. QSqlQueryModel *model = new QSqlQueryModel;  
  2. model->setQuery(“select * from student”);  
  3. model->setHeaderData(0, Qt::Horizontal, tr(“id”));  
  4. model->setHeaderData(1, Qt::Horizontal, tr(“name”));  
  5. QTableView *view = new QTableView;  
  6. view->setModel(model);  
  7. view->show();  

 

利用query執行SQL語句

  1. QSqlQuery query = model->query();  
  2. query.exec("select name from student where id = 1");  
  3. query.next();  
  4. qDebug() << query.value(0).toString(); // 如果上面的select改成insert語句,而且是顯示在QTableView中的話,需再查詢一次model->setQuery("select ...")才能顯示剛插入的語句  


       因為QSqlQueryMode模型默認是只讀的,所以我們在窗口上并不能對表格中的內容進行修改。但是我們可以創建自己的模型,然后按照我們自己的需要來顯示數據和修改數據。如果要想使其可讀寫,需要自己的類繼承自QSqlQueryModel,并且重寫setData() 和 flags() 兩個函數如果我們要改變數據的顯示,就要重寫data() 函數

  1. Qt::ItemFlags MySqlQueryModel::flags(const QModelIndex &index) const //返回表格是否可更改的標志  
  2. {  
  3.      Qt::ItemFlags flags = QSqlQueryModel::flags(index);  
  4.      if (index.column() == 1) //第二個字段可更改,即學生的名字字段  
  5.         flags |= Qt::ItemIsEditable;  
  6.      return flags;  
  7.  }  
  8.   
  9. bool MySqlQueryModel::setData(const QModelIndex &index, const QVariant &value, int /* role */) //表格添加數據  
  10. {  
  11.     QModelIndex primaryKeyIndex = QSqlQueryModel::index(index.row(), 0);  
  12.     int id = data(primaryKeyIndex).toInt(); //獲取id號 也可以這樣用,primaryKeyIndex.data();  
  13.   
  14.     clear();  
  15.     bool isOk;  
  16.     if (index.column() == 1) //第二個屬性可更改  
  17.     {  
  18.         QSqlQuery query;  
  19.         query.prepare("UPDATE STUDENT SET NAME = :name WHERE id = :id");  
  20.         query.bindValue(":name","小五");  
  21.         query.bindValue(":id",id);  
  22.         isOk = query.exec();  
  23.   
  24.         refresh();// 此處最好添加代碼刷新結果,或在此調用刷新函數  
  25.         return isOK;  
  26.     }  
  27.     return false;  
  28. }  
  29.   
  30. void MySqlQueryModel::refresh() //更新顯示  
  31. {  
  32.     setQuery("select * from student");  
  33.     setHeaderData(0, Qt::Horizontal, QObject::tr("學號ID"));  
  34.     setHeaderData(1, Qt::Horizontal, QObject::tr("名字"));  
  35. //  
  1. //tata()改寫某一個列的顯示樣式,對齊方式  
  2. QVariant MySqlQueryModel::data(const QModelIndex &index, int role) const  
  3. {  
  4.     QVariant value = QSqlQueryModel::data(index, role);  
  5.     if (role == Qt::TextColorRole && index.column() == 0)  
  6.         return qVariantFromValue(QColor(Qt::red)); //第一個屬性的字體顏色為紅色  
  7.   
  8.     if (role == Qt::TextAlignmentRole && index.column() == 1)  
  9.     {  
  10.         value = (Qt::AlignVCenter + Qt::AlignRight); // 靠右垂直居中  
  11.     }  
  12.       
  13.     return value;  

posted on 2012-04-23 11:21 米米 閱讀(551) 評論(0)  編輯 收藏 引用 所屬分類: qt
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲高清不卡在线| 亚洲人成网站精品片在线观看 | 亚洲一区成人| 欧美激情五月| 99精品国产热久久91蜜凸| 久久一区中文字幕| 篠田优中文在线播放第一区| 国产日韩在线视频| 久久在线91| 欧美激情日韩| 欧美一区二区三区在线观看| 欧美中文字幕在线播放| 91久久精品日日躁夜夜躁国产| 亚洲天堂av综合网| 亚洲免费小视频| 精品69视频一区二区三区| 亚洲高清av在线| 国产精品色一区二区三区| 久久美女性网| 免费一级欧美在线大片| 国产精品99久久久久久久女警| 久久久久免费观看| 欧美国产日韩精品| 欧美在线视频一区| 欧美国产综合视频| 欧美尤物巨大精品爽| 麻豆精品精品国产自在97香蕉| 国产伦精品一区二区三区视频孕妇| 在线观看亚洲精品视频| 亚洲人成啪啪网站| 国产精品美女黄网| 亚洲国产精品一区二区第四页av | 亚洲一区免费视频| 国语自产精品视频在线看8查询8| 亚洲一区免费| 欧美在线一级视频| 99精品欧美一区二区蜜桃免费| 亚洲国产精品久久精品怡红院| 午夜欧美电影在线观看| 亚洲激情第一区| 欧美一区二区私人影院日本| 亚洲欧洲一区| 久久国产乱子精品免费女| 亚洲小说欧美另类社区| 久久偷窥视频| 久久久精品999| 国产精品久久久久久亚洲调教 | 欧美专区中文字幕| 欧美理论在线播放| 欧美顶级艳妇交换群宴| 国产一区二区| 亚洲欧美一区在线| 亚洲欧美国产日韩天堂区| 欧美精品日韩精品| 欧美高清视频在线观看| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品乱码一区二三区小蝌蚪| 亚洲国产网站| 欧美一区二区视频免费观看| 制服丝袜亚洲播放| 欧美精品激情在线观看| 欧美大片在线观看一区| 精品1区2区3区4区| 久久久国产精品一区二区中文| 亚洲高清av| 久久久久久久国产| 欧美freesex8一10精品| 国产免费一区二区三区香蕉精| 久久久久久久97| 国产一区二区黄色| 欧美一级夜夜爽| 久久亚洲色图| 在线成人欧美| 欧美aa国产视频| 亚洲人成网站精品片在线观看| 国产精品成人aaaaa网站| 亚洲免费精彩视频| 亚洲欧美日韩精品久久| 国产精品人人爽人人做我的可爱| 老司机精品视频一区二区三区| 欧美成人国产| 一本色道久久| 欧美一区三区三区高中清蜜桃| 蜜臀99久久精品久久久久久软件| 在线综合亚洲| 国产精品一区二区在线| 久久er精品视频| 欧美jizzhd精品欧美喷水| 亚洲精美视频| 欧美色网一区二区| 欧美一级电影久久| 美国十次成人| 一本久久青青| 国产一区二区av| 欧美成人免费全部| 亚洲视频一区二区| 麻豆精品91| 亚洲女同同性videoxma| 韩国免费一区| 欧美精选午夜久久久乱码6080| 麻豆精品网站| 99精品视频免费| 国产欧美一区二区精品忘忧草| 日韩一区二区免费高清| 久久久久久综合| 亚洲精品欧美一区二区三区| 国产伦精品一区二区三区| 蜜月aⅴ免费一区二区三区| 一区二区三区久久| 免费在线欧美视频| 性欧美激情精品| 亚洲人成在线观看| 国产一区二区精品久久91| 欧美日本中文字幕| 久久精品伊人| 亚洲欧美在线免费| 亚洲精品乱码视频| 久久天堂国产精品| 欧美一区二区精品在线| 日韩视频在线观看免费| 国产揄拍国内精品对白 | 欧美1区2区3区| 亚洲欧美国产毛片在线| 亚洲国产一区二区三区青草影视| 老司机久久99久久精品播放免费 | 夜夜爽av福利精品导航 | 国产欧美日韩另类一区| 欧美成人a∨高清免费观看| 久久成人免费网| 亚洲视频高清| 一区二区三区免费网站| 亚洲国产裸拍裸体视频在线观看乱了| 尤物精品国产第一福利三区| 国产精品一香蕉国产线看观看| 亚洲欧美在线网| 亚洲一级免费视频| 亚洲精品之草原avav久久| 欧美va亚洲va香蕉在线| 久久久av网站| 久久久久久有精品国产| 欧美怡红院视频| 欧美一区二区免费观在线| 亚洲欧美制服另类日韩| 亚洲自拍16p| 亚洲欧美视频| 香蕉成人久久| 久久不见久久见免费视频1| 香蕉久久一区二区不卡无毒影院| 韩国av一区二区三区四区| 国产午夜精品久久久久久久| 国产精品久久精品日日| 国产精品高潮呻吟视频| 国产精品福利网| 国产精品自在线| 国产亚洲成年网址在线观看| 国产视频精品网| 国产一区二区三区免费观看| 国模大胆一区二区三区| 亚洲第一在线综合在线| 亚洲电影观看| 日韩一二在线观看| 亚洲砖区区免费| 久久国产婷婷国产香蕉| 另类国产ts人妖高潮视频| 欧美成人午夜激情视频| 亚洲七七久久综合桃花剧情介绍| 久久国产精品久久精品国产| 久久久久一区二区三区| 欧美不卡在线视频| 亚洲精品影视在线观看| 在线亚洲美日韩| 久久精品一区四区| 欧美激情综合色| 国产女人水真多18毛片18精品视频| 欧美福利网址| 国产精品视频久久久| 在线看视频不卡| 亚洲综合成人在线| 久久一本综合频道| 亚洲美女av网站| 久久精品国产久精国产爱| 欧美经典一区二区三区| 国产日韩av一区二区| 亚洲人成人一区二区三区| 午夜久久电影网| 亚洲高清av在线| 欧美一区二区日韩一区二区| 欧美69wwwcom| 国产真实久久| 亚洲午夜日本在线观看| 欧美va天堂在线| 欧美一区二区高清在线观看| 欧美日韩国产天堂| 在线观看成人小视频| 午夜精品一区二区三区四区 | 欧美一乱一性一交一视频| 欧美二区视频| 亚洲综合大片69999| 欧美日韩国产欧美日美国产精品| 欧美国产日本韩|