gpt4 book ai didi

c++ - 如何将一个简单的 QSqlQueryModel 从一个类返回到另一个类?

转载 作者:行者123 更新时间:2023-11-29 00:14:31 24 4
gpt4 key购买 nike

我只想处理数据库并将结果添加到模型并将其发送到另一个类并在 GUI 中查看。摘要代码为:

我有一个公共(public)类成员:

QSqlQueryModel  *model;

加载数据并将其添加到模型并返回模型:

QSqlQueryModel* PersistenceAdapter::loadServerList(){
cout<<"Loading data"<<endl;
QSqlQuery* qry = new QSqlQuery(db);
qry->prepare("select * from student1.SERVERLIST");
model = new QSqlQueryModel();
model->setQuery(*qry);
return model;
}

在其他类(class)中,我有一个加载列表功能。错误来自这里:

void MainWindow::setServersList(QSqlQueryModel *myModel) {
widget.serverListView->setModel(myModel);
}

然后我从同一个类的构造函数中调用它,这里是代码:

MainWindow::MainWindow() {
//Stablish connection to database
PersistenceAdapter *p = new PersistenceAdapter();
setServersList(p->loadServerList());
}

错误是:

RUN FINISHED; Segmentation fault; core dumped; real time: 210ms; user: 10ms; system: 40ms

如果有人能提供帮助,我们将不胜感激。

最佳答案

您的代码中有几个错误。此外,这里有一些适合您情况的技巧:

  1. 你确定你的model成员被初始化/实例化? 要检查它,只需执行 if model!=NULL检查。
  2. 你确定你的db (在 PersistenceAdapter::loadServerList() 中)被实例化了吗? _要检查它,只需执行 if model!=NULL查看。另外,检查该数据库是否已成功打开,并检查它是否 isOpen 在使用的时刻。请记住,您在进行多线程数据库访问时可能会遇到一些错误。
  3. 我不建议创建 QSqlQuery , 而不是你可以使用另一个 setQuery method .
  4. 应用查询后,请检查:if (model.lastError().isValid()) qDebug() << model.lastError();
  5. 检查调用函数的顺序——如果实例化db先于访问 db等等。

希望这些提示能有所启发。祝你好运!

关于c++ - 如何将一个简单的 QSqlQueryModel 从一个类返回到另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23469054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com