欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      QT讀取注冊(cè)表總結(jié)(精選五篇)

      時(shí)間:2019-05-12 05:36:03下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《QT讀取注冊(cè)表總結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《QT讀取注冊(cè)表總結(jié)》。

      第一篇:QT讀取注冊(cè)表總結(jié)

      問(wèn)題:使用QSettings時(shí),對(duì)于注冊(cè)表中類似于串口信息中的DeviceSerial0的這種key值,用value()函數(shù)無(wú)法讀到其value。

      分析:QT在讀取注冊(cè)表時(shí),對(duì)于有路徑分隔符“”“/”的value都無(wú)法讀取,應(yīng)該屬于QT的一個(gè)小bug。解決方法:.h文件

      #ifndef WIDGET_H #define WIDGET_H #include #include #include #include

      #include namespace Ui { class Widget;} class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0);~Widget();private: Ui::Widget *ui;QStringList m_listcomboName;HKEY hKey;LPCWSTR subkey;wchar_t keyname[256];//鍵名數(shù)組

      char keyvalue[256];//鍵值數(shù)組

      DWORD keysize,type,valuesize;int indexnum;public: QString getcomm(int index,QString keyorvalue);//讀取鍵名 };#endif // WIDGET_H

      .cpp 文件

      #include “widget.h” #include “ui_widget.h”

      Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this);QString path = “HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM”;QSettings *settings = new QSettings(path, QSettings::NativeFormat);QStringList key = settings->allKeys();int num =(int)key.size();QString value;for(int i=0;i

      } Widget::~Widget(){ delete ui;} QString Widget::getcomm(int index,QString keyorvalue)//index為索引號(hào),keyorvalue為選擇返回值應(yīng)該為key還是value { QString commresult;

      if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT(“HARDWAREDEVICEMAPSERIALCOMM”),0,KEY_READ,&hKey)!=0){ QString error=“Cannot open regedit!”;//無(wú)法打開(kāi)注冊(cè)表時(shí)返回error return error;}//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)

      QString keymessage;//鍵名

      QString message;QString valuemessage;//鍵值

      indexnum = index;//要讀取鍵值的索引號(hào)

      keysize=sizeof(keyname);valuesize=sizeof(keyvalue);

      if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0)//列舉鍵名和值

      { for(int i=0;i

      for(int j=0;j

      if(keyorvalue==“key”){ commresult=keymessage;} if(keyorvalue==“value”){ commresult=valuemessage;} } else

      { commresult=“nokey”;}

      //if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0)列舉鍵名和值

      return commresult;::RegCloseKey(hKey);//關(guān)閉注冊(cè)表 }

      第二篇:Qt數(shù)據(jù)庫(kù)總結(jié)

      Qt數(shù)據(jù)庫(kù)總結(jié)

      #include QT += sql QSqlDatabase類實(shí)現(xiàn)了數(shù)據(jù)庫(kù)連接的操作 QSqlQuery類用來(lái)執(zhí)行SQL語(yǔ)句 QSqlRecord類 封裝數(shù)據(jù)庫(kù)所有記錄 第一:QSqlDatabase類

      QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);采用QSQLITE數(shù)據(jù)庫(kù),QMYSQL數(shù)據(jù)庫(kù)有問(wèn)題?

      db.setHostName(“l(fā)ocalhost”);//設(shè)置數(shù)據(jù)庫(kù)主機(jī)名

      db.setDatabaseName(“test”);//設(shè)置數(shù)據(jù)庫(kù)名

      db.setUserName(“root”);//設(shè)置數(shù)據(jù)庫(kù)登入用戶名

      db.setPassword(“123456”);//設(shè)計(jì)數(shù)據(jù)庫(kù)登入密碼

      db.open()打開(kāi)數(shù)據(jù)庫(kù)連接 db.close();//釋放數(shù)據(jù)庫(kù)

      QStringList drivers = QSqlDatabase::drivers();//靜態(tài)成員函數(shù),是類的成員函數(shù),不是對(duì)象的.返回所有可用的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的清單

      drivers.removeAll(“QMYSQL3”);//刪除列表中的項(xiàng)

      foreach(QString driver, drivers)//遍歷數(shù)據(jù)庫(kù)驅(qū)動(dòng),測(cè)試數(shù)據(jù)庫(kù)驅(qū)動(dòng)種類

      qDebug()<< “t” << driver;建立數(shù)據(jù)庫(kù)文件

      QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);

      db.setDatabaseName(“database.db”);

      if(!db.open())return false;

      QSqlQuery query;query.exec(“create table Login(id INTEGER PRIMARY KEY autoincrement, ” //id會(huì)自動(dòng)增加,因?yàn)檫@里不能重復(fù),否則數(shù)據(jù)庫(kù)無(wú)法修改

      “goods int, store int, time nvarchar(50), type int, place nvarchar(50),temperature nvarchar(10))”);

      //query.exec(“insert into Login values(1,1002, 1,'2011-9-6',1,'common',24)”);

      // query.exec(“insert into Login values(2,1005, 1,'2011-9-6',1,'common',24)”);

      //query.exec(“insert into Login values(3,1010, 2,'2011-9-7',2,'common',25)”);//

      query.exec(“insert into Login values(4,1012, 2,'2011-9-7',2,'common',25)”);

      query.exec(“insert into Login values(1,NULL , NULL,NULL, NULL,NULL,NULL)”);

      query.exec(“insert into Login values(2,NULL , NULL,NULL, NULL,NULL,NULL)”);

      query.exec(“insert into Login values(3,NULL , NULL,NULL, NULL,NULL,NULL)”);

      query.exec(“insert into Login values(4,NULL , NULL,NULL, NULL,NULL,NULL)”);

      query.exec(“insert into Login values(5,NULL , NULL,NULL, NULL,NULL,NULL)”);

      query.exec(“insert into Login values(6,NULL , NULL,NULL, NULL,NULL,NULL)”);

      第二:QSqlQuery類,查詢數(shù)據(jù)庫(kù),插入值到數(shù)據(jù)庫(kù)等操作數(shù)據(jù)庫(kù)

      QSqlQuery query;

      query.prepare(“INSERT INTO T_USER(name, age)VALUES(:name, :age)”);//準(zhǔn)備執(zhí)行SQL查詢

      query.bindValue(“:name”, “justin”);//在這定占位符上確定綁定的值 query.bindValue(“:age”, 33);query.exec();

      QSqlQuery query;//以下執(zhí)行相關(guān)QSL語(yǔ)句

      query.exec(“create table student(id int primary key,name varchar)”);

      //新建student表,id設(shè)置為主鍵,還有一個(gè)name項(xiàng)

      query.exec(“insert into student values(1,’xiaogang’)”);

      query.exec(“insert into student values(2,’xiaoming’)”);

      query.exec(“insert into student values(3,’xiaohong’)”);

      //向表中插入3條記錄

      query.exec(“select * from student”);

      來(lái)查詢出表中所有的內(nèi)容。其中的SQL語(yǔ)句“select * from student”中“*”號(hào)表明查詢表中記錄的所有屬性。而當(dāng)query.exec(“select * from student”);這條語(yǔ)句執(zhí)行完后,我們便獲得了相應(yīng)的執(zhí)行結(jié)果,因?yàn)楂@得的結(jié)果可能不止一條記錄,所以我們稱之為結(jié)果集。

      while(query.next())QString name = query.value(0).toString();//返回“name”字段的索引值“justin”,value(i)返回i字段的值,0表示name,1表示age int id = query.value(1).toInt();seek(int n):query指向結(jié)果集的第n條記錄。指定當(dāng)前的位置 first():query指向結(jié)果集的第一條記錄。last():query指向結(jié)果集的最后一條記錄。

      next():query指向下一條記錄,每執(zhí)行一次該函數(shù),便指向相鄰的下一條記錄。

      previous():query指向上一條記錄,每執(zhí)行一次該函數(shù),便指向相鄰的上一條記錄。

      record():獲得現(xiàn)在指向的記錄。

      value(int n):獲得屬性的值。其中n表示你查詢的第n個(gè)屬性,比方上面我們使用“select * from student”就相當(dāng)于“select id, name from student”,那么value(0)返回id屬性的值,value(1)返回name屬性的值。該函數(shù)返回QVariant類型的數(shù)據(jù),關(guān)于該類型與其他類型的對(duì)應(yīng)關(guān)系,可以在幫助中查看QVariant。

      at()//返回當(dāng)前查詢的位置

      int fieldNo = query.record().indexOf(“name”);//返回“name”的列號(hào)

      int rowNum = query.at();

      //獲取query所指向的記錄在結(jié)果集中的編號(hào)

      int columnNum = query.record().count();

      //獲取每條記錄中屬性(即列)的個(gè)數(shù)

      int fieldNo = query.record().indexOf(“name”);

      //獲取”name”屬性所在列的編號(hào),列從左向右編號(hào),最左邊的編號(hào)為0

      int id = query.value(0).toInt();

      //獲取id屬性的值,并轉(zhuǎn)換為int型

      QString name = query.value(fieldNo).toString();

      //獲取name屬性的值

      qDebug()<< “rowNum is : ” << rowNum //將結(jié)果輸出

      << ” id is : ” << id

      << ” name is : ” << name

      << ” columnNum is : ” << columnNum;

      } if(query.seek(2))//seek指定當(dāng)前的位置

      if(query.seek(ui->spinBox->value()))

      {

      qDebug()<< query.value(0).toInt()<< query.value(1).toString();

      while(query.next())//每執(zhí)行一次該函數(shù),便指向相鄰的下一條記錄。

      {

      qDebug()<< query.value(0).toInt()<< query.value(1).toString();//value(i)返回i字段的值,0表示id,1表示name

      }

      }

      //批處理操作函數(shù)--批量插入到數(shù)據(jù)庫(kù)中

      QSqlQuery q;

      q.prepare(“insert into student values(?, ?)”);

      QVariantList ints;

      //QVariantList==QList

      ints << 10 << 11 << 12 << 13;

      q.addBindValue(ints);//綁定

      QVariantList names;

      names << “xiaoming” << “xiaoliang” << “xiaogang” << QVariant(QVariant::String);

      //最后一個(gè)是空字符串,應(yīng)與前面的格式相同

      q.addBindValue(names);

      if(!q.execBatch())//進(jìn)行批處理,如果出錯(cuò)就輸出錯(cuò)誤

      qDebug()<< q.lastError();

      //事務(wù)操作--操作函數(shù)transaction(),commit()提交,rollback()回滾 事務(wù)是數(shù)據(jù)庫(kù)的一個(gè)重要功能,所謂事務(wù)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做要么全不做,是一個(gè)不可分割的工作單位。

      在Qt中用transaction()開(kāi)始一個(gè)事務(wù)操作,用commit()函數(shù)或rollback()函數(shù)進(jìn)行結(jié)束。commit()表示提交,即提交事務(wù)的所有操作。

      具體地說(shuō)就是將事務(wù)中所有對(duì)數(shù)據(jù)庫(kù)的更新寫(xiě)回到數(shù)據(jù)庫(kù),事務(wù)正常結(jié)束。rollback()表示回滾,即在事務(wù)運(yùn)行的過(guò)程中發(fā)生了某種故障,事務(wù)不能繼續(xù)進(jìn)行,系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的操作全部撤銷,回滾到事務(wù)開(kāi)始時(shí)的狀態(tài)。

      if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))//先判斷該數(shù)據(jù)庫(kù)是否支持事務(wù)操作。hasFeature是QSQLDriver類函數(shù)

      if(QSqlDatabase::database().transaction())//啟動(dòng)事務(wù)操作

      QModelIndex類--用來(lái)定義數(shù)據(jù)模型中的數(shù)據(jù)

      第三:QSqlQueryModel類

      只讀數(shù)據(jù)模型為數(shù)據(jù)庫(kù)結(jié)果集

      函數(shù):void QSqlQueryModel::setQuery(const QString & query, const QSqlDatabase & db = QSqlDatabase()//執(zhí)行訪問(wèn)query從給定的數(shù)據(jù)庫(kù)db setHeaderData()

      //設(shè)置水平頭標(biāo)題

      columnCount();//獲得列數(shù)

      columnCount();//獲得列數(shù)

      QSqlRecord QSqlQueryModel::record(int row)const //返回row行包含的信息

      QModelIndex QAbstractItemModel::index(int row, int column, const QModelIndex & parent = QModelIndex())//返回指定的行和列的確定的那個(gè)索引(index)index.data()//返回index索引的值 1.QSqlQueryModel *model = new QSqlQueryModel;

      model->setQuery(“select * from student”);//查詢整個(gè)student表的內(nèi)容,訪問(wèn)給定的數(shù)據(jù)庫(kù)

      model->setHeaderData(0, Qt::Horizontal, tr(“id”));

      model->setHeaderData(1, Qt::Horizontal, tr(“name”));

      QTableView *view = new QTableView;

      view->setModel(model);//重新定義模型,model直接從database.db的數(shù)據(jù)庫(kù)中插入數(shù)據(jù)

      view->show();2.int column = model->columnCount();//獲得列數(shù)

      int row = model->rowCount();

      // 獲得行數(shù)

      QSqlRecord record = model->record(1);//獲得一條記錄

      QModelIndex index = model->index(1,1);//獲得一條記錄的一個(gè)屬性的值

      qDebug()<< “column num is:” << column << endl

      << “row num is:” << row << endl

      <<“the second record is:” << record << endl

      <<“the data of index(1,1)is:” << index.data();

      3.QSqlQuery query = model->query();

      //返回與QSqlQuery相關(guān)的模型

      query.exec(“insert into student values(10,'yafei10')”);//在模型中插入一條記錄

      model->setQuery(“select * from student”);//再次查詢整張表

      view->show();//再次進(jìn)行顯示,這句也可以不寫(xiě)

      4.使QSqlQueryModel類

      創(chuàng)建的數(shù)據(jù)庫(kù)能讀寫(xiě)

      繼承QAbstractItemModel類

      剛開(kāi)始我們就講到,這個(gè)模型默認(rèn)是只讀的,所以我們?cè)诖翱谏喜⒉荒軐?duì)表格中的內(nèi)容進(jìn)行修改。但是我們可以創(chuàng)建自己的模型,然后按照我們自己的意愿來(lái)顯示數(shù)據(jù)和修改數(shù)據(jù)。

      要想使其可讀寫(xiě),需要自己的類繼承自QSqlQueryModel,并且重寫(xiě)setData()和 flags()兩個(gè)函數(shù)。如果我們要改變數(shù)據(jù)的顯示,就要重寫(xiě)data()函數(shù)。bool QAbstractItemModel::setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole)//設(shè)置根據(jù)index索引到的value值

      Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex & index)const //返回給定的index索引的標(biāo)志

      QVariant QAbstractItemModel::data(const QModelIndex & index, int role = Qt::DisplayRole)const //返回index和role(顯示狀態(tài))確定的值 Qt::ItemFlags MySqlQueryModel::flags(const QModelIndex &index)const //返回表格是否可更改的標(biāo)志 {

      Qt::ItemFlags flags = QSqlQueryModel::flags(index);

      if(index.column()== 1)//第二個(gè)屬性可更改

      flags |= Qt::ItemIsEditable;//flags能被編輯,所以第二列能被編輯

      return flags;} QVariant MySqlQueryModel::data(const QModelIndex &index, int role)const

      //更改數(shù)據(jù)顯示樣式 {

      QVariant value = QSqlQueryModel::data(index, role);

      if(role == Qt::TextColorRole && index.column()== 0)//Qt::TextColorRole是確定顏色等為9,所以與之后是第一列

      return qVariantFromValue(QColor(Qt::red));//第一個(gè)屬性的字體顏色為紅色

      return value;}

      第四:QSqlTableModel 繼承QSqlQueryModel類--該類提供了一個(gè)可讀寫(xiě)單張SQL表的可編輯數(shù)據(jù)模型,功能:修改,插入,刪除,查詢,和排序 QSqlTableModel *model = new QSqlTableModel;virtual bool removeColumns(int column, int count, const QModelIndex & parent = QModelIndex())//model->removeColumns(0)刪除第一列 bool QSqlTableModel::submitAll(),//提交所有被修改的數(shù)據(jù),然后修改的數(shù)據(jù)被保存在數(shù)據(jù)庫(kù)中 void QSqlTableModel::revertAll()//撤銷所有的修改,但是如果數(shù)據(jù)庫(kù)已經(jīng)被提交了修改,就不能通過(guò)撤銷修改改回來(lái)了

      void QSqlTableModel::setFilter(const QString & filter)//篩選,按照字符串filter對(duì)數(shù)據(jù)庫(kù)進(jìn)行篩選

      bool QSqlTableModel::select()//在篩選和排序的條件下,將數(shù)據(jù)庫(kù)中符合要求的在mode表格中顯示出來(lái)

      void QSqlTableModel::setSort(int column, Qt::SortOrder order)//排序操作。按照列和Qt::SortOrder排序。Qt::SortOrder有升序和降序 virtual void revertRow(int row)//刪除行

      bool insertRow(int row, const QModelIndex & parent = QModelIndex())//插入行,也有插入列

      model->setEditStrategy(QSqlTableModel::OnManualSubmit);//設(shè)置保存策略為手動(dòng)提交,OnManualSubmit表明我們要提交修改才能使其生效。1.//在tableview表格中顯示數(shù)據(jù)庫(kù)數(shù)據(jù)

      model = new QSqlTableModel(this);

      model->setTable(“student”);//設(shè)置“student”的數(shù)據(jù)庫(kù)表格

      model->setEditStrategy(QSqlTableModel::OnManualSubmit);//設(shè)置保存策略為手動(dòng)提交

      model->select();//選取整個(gè)表的所有行

      // model->removeColumn(1);//不顯示name屬性列,如果這時(shí)添加記錄,則該屬性的值添加不上。

      ui->tableView->setModel(model);//重新定義模型,model直接從database.db的數(shù)據(jù)庫(kù)中插入數(shù)據(jù)

      //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//使其不可編輯

      2.//當(dāng)tableview被修改后,要通過(guò)submitAll()函數(shù)進(jìn)行保存 bool QSqlTableModel::submitAll(),提交所有被修改的數(shù)據(jù),然后修改的數(shù)據(jù)被保存在數(shù)據(jù)庫(kù)中

      model->database().transaction();//開(kāi)始事務(wù)操作

      if(model->submitAll()){ //提交所有被修改的數(shù)據(jù),然后修改的數(shù)據(jù)被保存在數(shù)據(jù)庫(kù)中

      model->database().commit();//提交

      } else {

      model->database().rollback();//回滾

      QMessageBox::warning(this, tr(“tableModel”),tr(“數(shù)據(jù)庫(kù)錯(cuò)誤: %1″)

      .arg(model->lastError().text()));

      }

      model->revertAll();//撤銷修改

      3.查詢操作--void QSqlTableModel::setFilter(const QString & filter)//篩選

      QString name = ui->lineEdit->text();

      model->setFilter(QObject::tr(“name = ‘%1′”).arg(name));//根據(jù)姓名進(jìn)行篩選

      model->select();//顯示結(jié)果 4.排序操作 // model->setSort(0,Qt::AscendingOrder);//id屬性,即第0列,升序排列

      model->select();model->setSort(0,Qt::DescendingOrder);

      model->select();5.刪除行

      // int curRow = ui->tableView->currentIndex().row();

      //獲取選中的行

      // model->removeRow(curRow);//刪除一行

      //刪除該行

      QItemSelectionModel *selections = ui->tableView->selectionModel();//返回當(dāng)前的選擇模式

      QModelIndexList selected = selections->selectedIndexes();//返回所有選定模型項(xiàng)目索引列表

      foreach(QModelIndex index, selected)

      {

      int curRow=index.row();

      model->removeRow(curRow);//刪除所有被選中的行

      }

      int ok = QMessageBox::warning(this,tr(“刪除當(dāng)前行!”),tr(“你確定”

      “刪除當(dāng)前行嗎?”),QMessageBox::Yes,QMessageBox::No);

      if(ok == QMessageBox::No)

      {

      model->revertAll();//如果不刪除,則撤銷

      }

      else model->submitAll();//否則提交,在數(shù)據(jù)庫(kù)中刪除該行 6.插入操作//插入行

      int rowNum = model->rowCount();//獲得表的行數(shù)

      int id = 10;

      model->insertRow(rowNum);//添加一行

      model->setData(model->index(rowNum,0),id);//給新行添加id屬性值

      //model->submitAll();//可以直接提交

      QSqlRelationalTableModel->Inherits QSqlTableModel->Inherits QSqlQueryModel->Inherits QAbstractTableModel->Inherits QAbstractItemModel->Inherits QObjec

      第五:QSqlRelationalTableModel--該類為單張的數(shù)據(jù)庫(kù)表提供了一個(gè)可編輯的數(shù)據(jù)模型,它支持外鍵,除此之外和QSqlTableModel沒(méi)有什么不同

      model->setRelation(2,QSqlRelation(“course”,”id”,”name”));//設(shè)置外鍵

      //將student表的第三個(gè)屬性設(shè)為course表的id屬性的外鍵,并將其顯示為course表的name屬性的值(course表在id上顯示為name屬性值)如果用戶更改課程屬性,那么他只能在課程表中有的課程中進(jìn)行選擇,而不能隨意填寫(xiě)課程。在Qt中的QSqlRelationalDelegate委托類就能實(shí)現(xiàn)這個(gè)功能 ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));QSqlRelationalDelegate類--提供委托delegate用來(lái)顯示編輯QSqlRelationalTableModel類 QTableView *view = new QTableView;

      view->setModel(model);

      view->setItemDelegate(new QSqlRelationalDelegate(view));

      QDataWidgetMapper類可以將數(shù)據(jù)庫(kù)和控件(如QLineEdit)連接起來(lái),使控件得到數(shù)據(jù)庫(kù)的值(例子:editEmployees)

      第六:QTableView、QListView、QTreeView和QSqlite

      第三篇:Qt期末知識(shí)點(diǎn)總結(jié)

      題型:選擇、判斷、簡(jiǎn)答、程序設(shè)計(jì)

      一、基本知識(shí)點(diǎn) 1.簡(jiǎn)單解釋Qt。

      2.QtGUI應(yīng)用程序的main()程序結(jié)構(gòu)。

      3.利用QtCreator創(chuàng)建窗口時(shí),系統(tǒng)提供的3個(gè)基類分別是什么?

      4.信號(hào)與槽 機(jī)制作用,信號(hào)與插槽關(guān)聯(lián)函數(shù)connection()在那個(gè)類中定義,前4個(gè)參數(shù)的意義,兩種關(guān)聯(lián)(手動(dòng)、自動(dòng))的區(qū)別。

      5.模態(tài)和非模態(tài)對(duì)話框(概念、創(chuàng)建、初始化、運(yùn)行、取結(jié)果)。6.標(biāo)準(zhǔn)對(duì)話框種類。

      7.布局管理器的任務(wù),布局及相關(guān)的類(QHBoxLayout、QVBoxLayout、QGridLayout、QStackLayout)管理窗體上子窗口部件的布局方法,以及編程方法。

      8.QmainWindow框架包含的組件(圖5-2)QmainWindow各部件使用的編程方法。9.Qt對(duì)C++的一些擴(kuò)展:Q_OBJECT、emit、moc、uic。

      10.為應(yīng)用程序提供圖片的常用方法(資源機(jī)制),如何使用資源 動(dòng)作(action)。11.創(chuàng)建菜單和工具欄的步驟 中央窗口(中心部件)。12.事件概念,幾種常見(jiàn)的事件,Qt中定時(shí)的方法及編程。13.Qt中事件處理和事件過(guò)濾方法 事件傳遞順序。

      14.順序容器(QVector(T)、QLinkedList(T)、QList(T)、QStack(T)、QQueue(T))關(guān)聯(lián)容器(QMap、QHash)兩種類型的迭代器(各包含只讀與讀寫(xiě)型)通用算法。15.圖形的繪制方法(QPainter、paintEvent()),繪圖設(shè)備(QpaintDevice、QWidget、QPixmap、QImage)

      16.QPainter的三個(gè)主要設(shè)置(畫(huà)筆、畫(huà)刷、字體)及相應(yīng)的類(QPen/QBrush/QFont)。17.Qt中輸入輸出方法及相關(guān)類 文本文件和二進(jìn)制文件讀寫(xiě)操作。18.數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)應(yīng)用程序中,在pro文件中分別要加入什么模塊。

      19.利用SQL語(yǔ)句Qt數(shù)據(jù)庫(kù)應(yīng)用程序的基本操作步驟(連接、查詢、取結(jié)果),SQL模型類型。

      20.Qt中與網(wǎng)絡(luò)相關(guān)的類(QNetworkAccessManager、QFtp、QHttp、QTcpSocket、QUdpSocket、QtcpServer),TCP客戶與服務(wù)器通信程序模型。21.線程概念及Qt相關(guān)類 線程的創(chuàng)建與啟動(dòng)

      22.線程的同步與互斥,方法(Qmutex、QreadWriteLock、Qsemphore、QWaitCondition)

      二、簡(jiǎn)單程序設(shè)計(jì) 1.對(duì)話框應(yīng)用程序。

      2.主窗口創(chuàng)建動(dòng)作、工具欄、菜單的程序代碼。3.幾種布局方法的關(guān)鍵代碼。4.文本文件和二進(jìn)制文件讀寫(xiě)操作。

      5.Qt數(shù)據(jù)庫(kù)基本應(yīng)用程序(利用SQL語(yǔ)句或SQL查詢模型)6.簡(jiǎn)單的TCP客戶與服務(wù)器程序

      第四篇:QT 學(xué)習(xí)心得

      QT 學(xué)習(xí)心得體會(huì)

      1:#include 中,sys代表這個(gè)是linux的系統(tǒng)文件

      2:fcntl.h文件控制,包含了open read write等等文件函數(shù),O_RDONLY只讀方式打開(kāi)文件,O_WRONLY只寫(xiě)方式打開(kāi)文件,O_RDWR可讀寫(xiě)方式打開(kāi)文件,O_NOCTTY如果欲打開(kāi)的文件為終端設(shè)備時(shí),則不會(huì)將終端機(jī)當(dāng)成進(jìn)程控制終端機(jī),O_NONBLOCK以不可阻擋方式打開(kāi)文件,也就是無(wú)論有無(wú)數(shù)據(jù)讀取活等待,都會(huì)立即返回進(jìn)程之中。

      3:unistd.h是POSIX標(biāo)準(zhǔn)定義的unix類符號(hào)常量的頭文件,包含了許多UNIX系統(tǒng)服務(wù)的函數(shù)原型,例如read函數(shù)、write函數(shù)和getpid函數(shù)

      4:我們所用的版本是qtopia2.2 頭文件格式 #include而在qt4己以后版本中,頭文件格式如下:#include

      5:v4l2是內(nèi)核提供給應(yīng)用程序訪問(wèn)音,視頻驅(qū)動(dòng)的統(tǒng)一接口

      6:v4l2的工作流程

      打開(kāi)設(shè)備->檢查和設(shè)置設(shè)備屬性->設(shè)置抮格式->設(shè)置一種輸入輸出方法->循環(huán)獲取數(shù)據(jù)->關(guān)閉設(shè)備,在對(duì)底層設(shè)備如攝像頭或串口操作時(shí),需要調(diào)用fcntl.hunistd.h,int

      fd=open(“/dev/video0”,O_RDWR),將終端設(shè)備打開(kāi),前面是設(shè)備名稱,后面為打開(kāi)的方式,讀,寫(xiě),讀寫(xiě)

      7:ioctl是中對(duì)設(shè)備的進(jìn)行管理的函數(shù)。所謂對(duì)I/O通道進(jìn)行管理,就是對(duì)設(shè)備的一些特性進(jìn)行控制,例如串口的傳輸波特率、馬達(dá)的轉(zhuǎn)速等等。它的調(diào)用個(gè)數(shù)如下:

      int ioctl(int fd, int cmd, …);

      其中fd就是用戶程序打開(kāi)設(shè)備時(shí)使用open函數(shù)返回的文件標(biāo)示符,cmd就是用戶程序?qū)υO(shè) 備的控制命令,至于后面的省略號(hào),那是一些補(bǔ)充參數(shù),一般最多一個(gè),有或沒(méi)有是和cmd的意義相關(guān)的。

      8:memset將s所指向的某一塊內(nèi)存中的每個(gè)的內(nèi)容全部設(shè)置為ch指定的ASCII值, 塊的大小由第三個(gè)參數(shù)指定,這個(gè)函數(shù)通常為新申請(qǐng)的內(nèi)存做初始化工作, 其返回值為指向S的指void *memset(void *s, int ch, unsigned n);

      9:由于qt designer不支持中文,所以需要編碼顯示中文,通常操作方法,添加頭文件#include,在源文件的構(gòu)造函數(shù)中添加如下代碼;QTextCodec * BianMa = QTextCodec::codecForName(“utf8”);

      SnapButton->setText(BianMa->toUnicode(“執(zhí)行”));

      10:在控制水平滑動(dòng)條(垂直滑動(dòng)條)移動(dòng)的時(shí)候,為減少畫(huà)面閃爍感,采用雙緩沖技術(shù)

      11:

      Qt是諾基亞開(kāi)發(fā)的一個(gè)跨平臺(tái)的C++圖形用戶界面框架。它提供給應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正地組件編程。自從 1996年早些時(shí)候,Qt進(jìn)入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。Qt也是流行的 Linux桌面環(huán)境KDE 的基礎(chǔ)。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫(kù)和 Windows平臺(tái)上的 MFC,OWL,VCL,ATL 是同類型的東西,但Qt具有優(yōu)良的跨平臺(tái)特性、面向?qū)ο?、豐富的API、大量的開(kāi)發(fā)文檔等優(yōu)點(diǎn)。

      qt是跨平臺(tái)的程序設(shè)計(jì)框架,在不同平臺(tái)上版本不同。寫(xiě)好的代碼需要在什么平臺(tái)上運(yùn)行,就采用那個(gè)平臺(tái)上的qt編譯器進(jìn)行編譯。

      qt支持嵌入式開(kāi)發(fā),qtopia是它的嵌入式版本。在主機(jī)上開(kāi)發(fā)的程序,通過(guò)qtopia編譯之后,傳到嵌入式平臺(tái)上就可以運(yùn)行。前提是這個(gè)平臺(tái)上已經(jīng)安裝了qtopia程序的運(yùn)行環(huán)境。

      12:V4L2(video 4 linux 2)

      程序有發(fā)現(xiàn)設(shè)備的能力和操作設(shè)備.它主要是用過(guò)一系列的回調(diào)函數(shù)來(lái)實(shí)現(xiàn)這些功能.像設(shè)置高頻頭的頻率,幀頻,視頻壓縮格式和圖像像參數(shù)等等(在我寫(xiě)的FM驅(qū)動(dòng)中就主要是設(shè)置頻率,設(shè)置音量等)

      查詢?cè)O(shè)備屬性:VIDEOC_QUERYCAP

      所以IOCTL主要用來(lái)控制I/O的屬性,可用來(lái)獲取設(shè)備信息,或用來(lái)顯示所有偵格式,獲取內(nèi)存等等IO操作

      int ioctl(int fd,int request,struct v4l2_capability *argp);

      顯示設(shè)備信息:struct v4l2_capability cap;

      ioctl(fd,VIDIOC_QUERYCAP,&cap);

      printf(“Driver Name:%s”,cap.driver);

      13:connect(const* sender, const char * signal, const* receiver,const char * member)[靜態(tài)]

      把從sender對(duì)象發(fā)送的signal和receiver對(duì)象中的member連接起來(lái),并且如果連接成功返回真,否則返回假,所以當(dāng)Sinal和SLOT信號(hào)都在同一個(gè)頁(yè)面文件時(shí)候,sender和receiver都是this

      14: BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop); 該函數(shù)對(duì)指定的源設(shè)備環(huán)境區(qū)域中的像素進(jìn)行位塊(bit_block)轉(zhuǎn)換,以傳送到目標(biāo)設(shè)備環(huán)境??梢杂靡噪p緩沖技術(shù)

      15:在調(diào)用libjpeg庫(kù)之前,首先要多l(xiāng)ibjpeg的源代碼進(jìn)行交叉編譯,再將庫(kù)中聲稱的部分文件拷到工作目錄下

      第五篇:qt的使用心得(定稿)

      總結(jié)(-)

      1> 定時(shí)器的使用

      QTimer *timer = new QTimer(this);

      connect(timer, SIGNAL(timeout()), this, SLOT(update()));// 設(shè)置定時(shí)器回調(diào)函數(shù)timer->start(1000);// 啟動(dòng)定時(shí)器

      2> 得到系統(tǒng)當(dāng)前時(shí)間

      QTime time = QTime::currentTime();

      time.hour();

      time.minute();

      time.second();

      time.msec();

      3> 窗口 widget 相關(guān)

      setWindowTitle(tr(“My Title”));// 設(shè)置窗口標(biāo)題

      resize(200, 200);// 設(shè)置窗口大小

      width();// 窗口寬度

      height();// 窗口高度

      4> 窗口(widget)事件回調(diào)相關(guān)(具體參考 widget.h 文件)

      #ifndef QT_NO_WHEELEVENT

      virtual void wheelEvent(QWheelEvent *);

      #endif

      virtual void keyPressEvent(QKeyEvent *);

      virtual void keyReleaseEvent(QKeyEvent *);

      virtual void focusInEvent(QFocusEvent *);

      virtual void focusOutEvent(QFocusEvent *);

      virtual void paintEvent(QPaintEvent *);// 每次刷新屏幕都會(huì)回調(diào)此函數(shù)

      virtual void actionEvent(QActionEvent *);

      5> QT 畫(huà)布(QPainter)的使用

      1.QColor hourColor(127, 0, 127);// 畫(huà)筆顏色

      2.3.QPainter painter(objWidget);// 創(chuàng)建一個(gè)畫(huà)布,objWidget 為當(dāng)前 畫(huà)筆的要畫(huà)到哪里,一般為

      Widget 對(duì)象

      4.// 設(shè)置畫(huà)布的樣式

      5.painter.setPen(Qt::NoPen);

      6.painter.setBrush(hourColor);

      7.painter.translate(width()/ 2, height()/ 2);// 畫(huà)布坐標(biāo)系統(tǒng)的移動(dòng)(當(dāng)前窗口的中心點(diǎn)位置)

      8.painter.scale(side / 200.0, side / 200.0);// 設(shè)置縮放

      9.painter.rotate(30.0);// 坐標(biāo)系統(tǒng),旋轉(zhuǎn) 30 度

      10.painter.save();

      11.12.painter.drawLine(92, 0, 96, 0);

      1.2.// 常用函數(shù)(參考QPainter.h)

      3.void drawText()

      4.void fillRect()

      5.void drawPoint()

      6.void drawPoints(const QPoint *points, int pointCount);

      7.void drawLine(int x1, int y1, int x2, int y2);

      8.void drawLines(const QLineF *lines, int lineCount);

      9.void drawRect(int x1, int y1, int w, int h);

      10.void drawRects(const QRectF *rects, int rectCount);

      11.void drawEllipse(int x, int y, int w, int h);

      12.void drawPolyline(const QPointF *points, int pointCount);

      13.14.void drawText(const QPointF &p, const QString &s);

      15.void drawImage()// 可以繪制圖片

      16.17.void eraseRect()

      18.19.void scale(qreal sx, qreal sy);// 設(shè)置縮放

      20.void rotate(qreal a);// 設(shè)置旋轉(zhuǎn)

      21.void setBackground(const QBrush &bg);// 設(shè)置背景顏色

      22.void setPen(const QColor &color);// 設(shè)置畫(huà)筆

      1.// 畫(huà)一個(gè)路徑(QPainterPath 可以存儲(chǔ) painter 的路徑信息)

      2.QPainterPath clock;// 初始化一個(gè)鐘表的形狀

      3.clock.addEllipse(-50.0,-50.0, 100.0, 100.0);

      4.clock.addEllipse(-48.0,-48.0, 96.0, 96.0);

      5.clock.moveTo(0.0, 0.0);

      6.clock.lineTo(-2.0,-2.0);

      7.clock.lineTo(0.0,-42.0);

      8.clock.lineTo(2.0,-2.0);

      9.clock.lineTo(0.0, 0.0);

      10.clock.moveTo(0.0, 0.0);

      11.clock.lineTo(2.732,-0.732);

      12.clock.lineTo(24.495, 14.142);

      13.clock.lineTo(0.732, 2.732);

      14.clock.lineTo(0.0, 0.0);

      15.16.QPainter painter(objWidget);// 創(chuàng)建一個(gè)畫(huà)布,objWidget 為當(dāng)前 畫(huà)筆的要畫(huà)到哪里,Widget 對(duì)象

      17.18.painter.fillPath(clock, Qt::blue);

      1.// 繪制一個(gè)文本

      2.3.QPainterPath text;

      4.QFont font;

      5.font.setPixelSize(50);

      6.QRect fontBoundingRect = QFontMetrics(font).boundingRect(tr(“Qt”));

      7.text.addText(-QPointF(fontBoundingRect.center()), font, tr(“Qt”));

      8.9.QPainter painter(objWidget);// 創(chuàng)建一個(gè)畫(huà)布,objWidget 為當(dāng)前 畫(huà)筆的要畫(huà)到哪里,Widget 對(duì)象

      10.painter.fillPath(text, Qt::blue);// 繪制一個(gè)文本

      painter.drawText(100,100, tr(“Hello!!”));// 一句話也可以搞定

      6> Layout 的使用舉例

      1.QGridLayout *mainLayout = new QGridLayout;

      2.3.// 2行 3列的一個(gè)網(wǎng)格布局

      4.for(int i = 0;i < 2;++i){ // 行

      5.for(int j = 0;j < 3;++j){ // 列

      6.7.glWidgets[i][j] = new GLWidget(0, 0);一般為一般為

      8.mainLayout->addWidget(glWidgets[i][j], i, j);// 直接將其他窗口對(duì)象,添加到 mainLayout

      中就可以

      9.}

      10.}

      11.setLayout(mainLayout);// 調(diào)用窗口對(duì)象的 setLayout 方法來(lái)設(shè)置布局

      7> QT 控件的使用 總結(jié) 1.QComboBox 下拉選擇控件

      2.3.shapeComboBox = new QComboBox;

      4.shapeComboBox->addItem(tr(“Clock”));

      5.shapeComboBox->addItem(tr(“House”));

      6.shapeComboBox->addItem(tr(“Text”));

      7.shapeComboBox->addItem(tr(“Truck”));

      8.9.// 置回調(diào)函數(shù) operationChanged

      10.connect(shapeComboBox, SIGNAL(activated(int)), this, SLOT(shapeSelected(int)));11.12.// 回到函數(shù)中, index 為當(dāng)前選擇的索引

      13.void Window::shapeSelected(int index)

      14.{

      15.}

      16.17.int index = shapeComboBox->currentIndex();// 可以得到當(dāng)前選擇的索引

      1.// Table View 的使用

      2.3.QStandardItemModel model(4, 2);// 設(shè)置表格的數(shù)據(jù)模型(4 行 2 列)

      4.QTableView tableView;// 表格對(duì)象

      5.tableView.setModel(&model);// 設(shè)置數(shù)據(jù)模型

      6.7.8.// 設(shè)置表格對(duì)象的數(shù)據(jù)顯示

      9.for(int row = 0;row < 10;++row)

      10.{

      11.for(int column = 0;column < 5;++column)

      12.{

      13.QModelIndex index = model.index(row, column, QModelIndex());// 得到某一個(gè)具體的數(shù)據(jù)索

      14.model.setData(index, QVariant(“aaaa”));// 設(shè)置數(shù)據(jù)

      15.}

      16.}

      表格數(shù)據(jù)的操作:

      1.model.setColumnCount(5);// 設(shè)置表格的列數(shù)

      2.model.setRowCount(2);// 設(shè)置表格的行數(shù)

      3.model.insertColumn(1);// 在第 1列后面,插入一列

      4.model.insertRow(1);// 在第 1 行后面,插入一列

      5.model.rowCount();// 表格行數(shù)

      6.model.columnCount();// 表格列數(shù)

      下載QT讀取注冊(cè)表總結(jié)(精選五篇)word格式文檔
      下載QT讀取注冊(cè)表總結(jié)(精選五篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Matlab文件讀取和寫(xiě)函數(shù)總結(jié)5篇

        時(shí)間:2015/10/26 作者:張貴勇 所在學(xué)校:鄭州大學(xué)實(shí)習(xí)公司:北方大賢風(fēng)電科技 Matlab讀取文件函數(shù)總結(jié) 1. load讀取方式 a.基本說(shuō)明: 只能讀取數(shù)值數(shù)據(jù),不能讀取含文本的數(shù)據(jù);日期......

        學(xué)習(xí)NC讀取心得[★]

        1 打開(kāi)和查看NC數(shù)據(jù) ncid = netcdf.open(‘example.nc’,'nc_write’); % 打開(kāi)文件,放入內(nèi)存,記錄文件的指針ncid; [ndims,nvars,ngatts,unlimdimid] = netcdf.inq(ncid); % 返......

        Halcon學(xué)習(xí)讀取多張圖片

        Halcon學(xué)習(xí)(一)讀取多張圖片 從今天開(kāi)始每天學(xué)習(xí)halcon軟件。本博客中所用版本均為halcon11.0。 第一種方法 ImagePath:= ImagePath[0]:='E:/images1/a000.bmp' ImagePath......

        C 文件的讀取和寫(xiě)入

        C++文件的讀取和寫(xiě)入.txt 2010-04-08 11:12筆記:C++文件的讀取和寫(xiě)入#include #include #include using namespace std; int main(){ char buffer[256]; ifstream myfil......

        注冊(cè)表與安全有關(guān)的配置

        1、 設(shè)置對(duì)注冊(cè)表工具(Regedit.exe)的運(yùn)行限制保護(hù)注冊(cè)表不受未經(jīng)授權(quán)訪問(wèn)的做好辦法之一是讓惡意用戶根本無(wú)法訪問(wèn)注冊(cè)表。對(duì)于服務(wù)器來(lái)說(shuō),這意味著要嚴(yán)格控制服務(wù)器的物理......

        Linux下QT程序開(kāi)發(fā)實(shí)訓(xùn)個(gè)人總結(jié)

        實(shí)訓(xùn)報(bào)告 實(shí)訓(xùn)名稱:姓名:院系:專業(yè)班級(jí):學(xué)號(hào):指導(dǎo)老師:基于Linux下QT程序開(kāi)發(fā)應(yīng)用實(shí)訓(xùn)總結(jié) 首先在技能方面,我們?cè)谶@周實(shí)訓(xùn)中運(yùn)用了 Linux開(kāi)發(fā)環(huán)境搭建,安裝了虛擬機(jī)VMware10,再用了Q......

        基于Qt的音樂(lè)播放器課程設(shè)計(jì)報(bào)告

        山西大學(xué) 課程設(shè)計(jì)報(bào)告 題 目:基于QT的音樂(lè)播放器 系 別: 軟件學(xué)院 班 級(jí): 1522班姓 名:賈夢(mèng)潔 學(xué) 號(hào):同組組員: 設(shè)計(jì)時(shí)間: 2017年12月22日----2017年12月30日公司名稱: 上海杰普......

        qt作業(yè):設(shè)計(jì)簡(jiǎn)單的UI界面

        qt第二次作業(yè): 1.通過(guò)qt designer設(shè)計(jì)界面如下: 2.通過(guò)槽函數(shù)實(shí)現(xiàn)功能,主要代碼如下: dialog.h的主要部分: private slots: void on_IconListWidget_currentRowChanged(int curre......