qtableview及其相关应用的使用
来源:互联网 发布:石家庄百度seo公司 编辑:程序博客网 时间:2024/06/16 09:18
static int SqlConnectIndex;QSqlDatabase db;//打开数据库
db = QSqlDatabase::addDatabase("QODBC",QString("sql_con%1").arg(SqlConnectIndex));// db = QSqlDatabase::addDatabase("QODBC");db.setDatabaseName(QString("DRIVER={SQL SERVER};""SERVER=%1;""DATABASE=%2;""UID=%3;""PWD=%4;").arg(DataSourceName).arg(DataBaseName).arg(UserID).arg(PassWord));if (!db.open()){
QMessageBox::warning(0, qApp->tr("Cannot open database"),db.lastError().databaseText(), QMessageBox::Cancel);ret=false;}
else{
qDebug()<<"CONNECT TO SQL"<<endl;ret=true;}
//1.从数据库中获取数据并显示到qtableview中QSqlQueryModel *sqlQ = new QSqlQueryModel(this);GetRecords(sqlQ,QObject::tr("select CMDID,CMDName,SeqInfoID from CMDInfo order by CMDID"));sqlQ->setHeaderData(0, Qt::Horizontal, "命令号");//设置各个列头的名称,Qt::Horizontal代表水平sqlQ->setHeaderData(1, Qt::Horizontal, "命令名称");sqlQ->setHeaderData(2, Qt::Horizontal, "序列号");bool SqlServer_RW::GetRecords(QSqlQueryModel* SqlModel, const QString SqlStr){SqlModel->setQuery(SqlStr,db);while(SqlModel->canFetchMore()){
SqlModel->fetchMore();
}
if(SqlModel->rowCount()>0){
return true;}
else{
return false;}
}QTable *TVall=new QTableView(this);TVall->setModel(sqlQ);//把QSqlQueryModel中的数据显示到QTableView中
//2、在数据库中执行更新语句
bool UpdateDeviceInfo(int index, int cmd, QString desc){QString sqlstr=QString("update DeviceInfo set CMD=%1,DeName='%2' where DeID=%3").arg(cmd).arg(desc).arg(index);return UpdateRecord(sqlstr);}bool UpdateRecord(const QString SqlStr){QSqlQuery query(db);return query.exec(SqlStr);}
//3、从tableview中获得数据
QAbstractItemModel *model = yourTableView->model ();
QModelIndex index = model->index(3,3);
QVariant data = model->data(index);
data可以根据需要转换为相应的QString,int等等数据类型,具体可以在Qt助手中输入QVariant 查看。
其实这个model是你自己定义的,在定义这个model的时候你留一个接口,能够通过行和列获取你的数据就行了,不一定非要依靠Qt的api。
//4、获取当前选中的行第一列的内容
int row=TVall->currentIndex().row();QAbstractItemModel *model = TVall->model();QModelIndex index = model->index(row,0);//选中行第一列的内容QVariant data = model->data(index);if(data==QVariant::Int)//可以这样来判断所得到数据的类型{
}
//5、获得tableview的第一列的列名
QAbstractItemModel *model=TVall->model();QVariant a=model->headerData(0,Qt::Horizontal,Qt::DisplayRole);qDebug()<<a.toString()<<endl;model->columnCount();//获得tableview的列数//6、tableview通过双击引发相应的槽函数connect(TVall,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(TVRowDoubleClick(QModelIndex)));void TVRowDoubleClick(QModelIndex index){int row=index.row();//得到行数后可以根据上面的内容得到相应行数的内容}void SqlServer_RW::gettime(QSqlQueryModel *mo){QString str="select Time from CtTime where id=1";mo->setQuery(str,db);QString strBuffer;QDateTime t=mo->record(0).value("Time").toDateTime();//直接从QSqlQueryModel中获取值strBuffer = t.toString("yyyy-MM-dd hh:mm:ss");qDebug()<<strBuffer<<endl;}
阅读全文
0 0
- qtableview及其相关应用的使用
- qt的QTableView使用
- QT::QTableView的使用
- QTableView 的使用
- QTableView与QAbstractTableModel的使用
- qt中qtableview的使用
- QT中的QTableView的使用
- Qt之QTableView的使用
- Qt中QTableView的使用
- QTableview 使用
- 【Java Web】: 使用Tomcat与MyEclipse搭建Web应用及其相关的配置
- PyQT——QTableView的使用
- QTreeView QTableview设置相关
- time及其相关函数的使用
- cocoapods的使用及其相关问题
- 关于QTableView和QTableWidget设置代理的相关问题
- Tomcat相关知识点及其应用
- OpenSSH服务及其相关应用
- JAVA线程池的理解
- springmvc mock单元测试
- 总结20170821
- 卡特兰数的应用(易懂版)
- spring-data-jpa hiberneate 中 uui的生成策略
- qtableview及其相关应用的使用
- Linux curl命令详解
- 关于通过Eclipse上传文件到HDFS文件为空的问题
- 推荐几个学习java的网站
- Eth-trunk链路聚合
- 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
- 连接板的优化设计-workbench结构优化设计
- 入住CSDN, 各位混个脸熟!
- Web API Global Error Handl