Qt无法将SQL数据库内容显示在TableView,代码无报错求助
解决TableView显示为空的问题
- 绑定正确的数据库连接:你打开的
db是外部对象,QSqlTableModel默认会用系统默认的数据库连接,大概率和你打开的不是同一个,必须手动绑定:currentCV.setDatabase(*db); - 执行查询加载数据:光设置表名没用,必须调用
select()才能从数据库拉取数据到模型里:currentCV.select(); - 避免模型对象提前销毁:
currentCV是if代码块里的栈变量,代码执行完这个块,对象就会被销毁,TableView自然没数据。改成堆分配或者把对象移到外部作用域:QSqlTableModel *currentCV = new QSqlTableModel(this); // 用this做父对象,自动管理内存
修正后的完整代码示例:
if(db->open()) { QSqlTableModel *currentCV = new QSqlTableModel(this); currentCV->setDatabase(*db); currentCV->setTable("employee_skills"); // 可以加个判断,看看select是否成功 if(currentCV->select()){ QTableView *view = new QTableView; view->setModel(currentCV); view->show(); } else { qInfo() << currentCV->lastError(); } }
最后再排查下:确认employee_skills表本身有数据,以及db的连接参数(比如路径、账号)都正确,有时候空表也可能是真的没数据。
内容的提问来源于stack exchange,提问作者user20324932
相关产品推荐
相关产品推荐

