网站首页 > 博客文章 正文
qt中的显示模式是model/view方式。
一、数据显示
我常用两种方式利用qtableview显示数据。
如下述代码所述,条件编译对应的不同代码代表了两种不同的显示方式。第一种方式利用QSqlQueryModel,利用不同的sql语句,显示不同的表格和数据。
void MeasureDB::showDataTable(tableInfo &table,QString filter)
{
#if 0
qDebug()<<"cur filter string"<<filter;
QSqlQueryModel *queryModel = new QSqlQueryModel(this);
QSqlQuery query(currDatabase());
QString strSql=QString("select * from %1 where tm like \'%2%\' order by id DESC")
.arg(table.name).arg(filter);
if(query.exec(strSql))
{
queryModel->setQuery(query);
for(int i=0;i<table.fieldTitles.split(',').count();i++)
{
QString tmp=table.fieldTitles.split(',').at(i);
queryModel->setHeaderData(i,Qt::Horizontal, QString(tmp.left(tmp.length()-1)));
}
while (queryModel->canFetchMore())
queryModel->fetchMore();
table.tableView->setModel(queryModel);
}
else
qDebug()<<"query error,string sql"<<strSql;
#else
if(!filter.isEmpty())
filter=QString("tm like \'%1%\' ").arg(filter);
model->setTable(table.name);
qDebug()<<"filter "<<filter;
model->setEditStrategy(QSqlTableModel::OnRowChange);
if(!filter.isEmpty())
model->setFilter(filter);
model->setSort(0,Qt::DescendingOrder);
model->select();
table.view->setModel(model);
table.view->resizeColumnsToContents();//表格列宽自适应调整<br> tableView->verticalHeader()->setHidden(true);//左侧行号隐藏#endif <br>}
第二方式,定义QSqlTableModel指针,设置过滤条件、显示表格、排序方式也可实现表格的显示。我使用过程中两点注意事项:
1,前面使用QSqlTableModel时,先对其进行继承后再利用。作为小白一枚,当时觉得QSqlTableMode是抽象类,看来还需要认知下什么叫做抽象类。
2,以前显示表格的时候,每列专门设置列宽用来显示不同的列。实际只需要调用resizeColumnsToContents函数,就可以自适应调整显示的列宽。
model = new QSqlTableModel(m_tableView,currDatabase());
二、获取QTableView单元格内容
代码如下,代码中tbIP为QTableView对象,下述代码就可以获取当前QTableview对象单元格(当前行,packages列)的内容。另,如果修改单元格内容,则需要利用上述第二种表格显示方式。
QSqlTableModel *model=(QSqlTableModel *)ui->tbIP->model();
qDebug()<<"cur value"<<model->record(index.row()).value("packages").toString();
文章转自博客园(Seeyou123):
https://www.cnblogs.com/gethope5/p/14631584.html
猜你喜欢
- 2025-06-09 详解RTP协议之H264封包和解包实战
- 2025-06-09 Qt开发经验小技巧146-150(qt开发项目)
- 2025-06-09 Qt Concurrent的使用(qt线程使用)
- 2025-06-09 Qt编写全能播放组件(支持ffmpeg2/3/4/5/6/Qt4/5/6)
- 2025-06-09 「Qt入门第24篇」 数据库(四)SQL查询模型QSqlQueryModel
- 2025-06-09 C++解析头文件-Qt自动生成信号声明
- 2025-06-09 这个C++ Qt 文件传输方案性能飙升300%,GitHub冲上热榜
- 2025-06-09 Qt编程进阶(25):Qt对Excel的基本读写操作
- 2025-06-09 Qt:QFile类(qt中的类是什么)
- 2025-06-09 Qt快速入门(工程的创建、UI界面布局、多线程、项目)
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)