首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从QSqlQueryModel中的函数返回C++?

如何从QSqlQueryModel中的函数返回C++?
EN

Stack Overflow用户
提问于 2014-05-05 08:02:01
回答 1查看 957关注 0票数 1

我有一个名为Load的类,它从数据库加载数据。另一个类是在表中显示数据。在函数中,我将返回QSqlQueryModel,即:由于无法编译它,所以目前它只是基本的:

代码语言:javascript
复制
QSqlQueryModel PersistenceAdapter::loadServerList(){

    login();
    cout<<"Loading data"<<endl;

    QSqlQueryModel  model = new QSqlQueryModel();

    logout();
    return model;
}

头文件中的定义为:

代码语言:javascript
复制
QSqlQueryModel loadServerList();

在另一堂课中,我收到的是:

代码语言:javascript
复制
setServersList(PersistenceAdapter.loadServerList());

这一条的定义是:

代码语言:javascript
复制
void MainWindow::setServersList(QSqlQueryModel serverdata) {

    //this->servers = serverdata;
    //this->amodel->addData(serverdata);
}

错误是:

错误:从‘QSqlQueryModel*’转换为非标量类型‘QSqlQueryModel’请求/usr/include/qt4 4/QtCore/qabstractitemmodel.h.h:在复制构造函数中‘QSqlQueryModel::QSqlQueryModel( constructor &)’:‘QAbstractTableModel::QAbstractTableModel(const /usr/include/qt4/QtSql/qsqlquerymodel.h:59:20:错误:在此上下文中PersistenceAdapter.cpp:在成员函数‘QSqlQueryModel PersistenceAdapter::loadServerList()’:PersistenceAdapter.cpp:70:12:注意:综合方法‘QSqlQueryModel::QSqlQueryModel(const&)’

如果有人能帮我这个忙.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 08:20:56

/usr/include/qt4/QtCore/qabstractitemmodel.h:360:5:错误:‘QAbstractTableModel::QAbstractTableModel(const QAbstractTableModel&)是私有的

该错误消息意味着您试图复制一个QObject,它不完全具有“值”语义,但更像是“标识”。QObjects本质上是不可复制的。原因是,在这种情况下,您将如何处理父/子层次结构?

这给您提供了一些提示,说明您试图滥用QObject子类实例,即将其声明为堆栈对象而不是堆。

这是代码中有问题的地方:

代码语言:javascript
复制
QSqlQueryModel  model = new QSqlQueryModel();

这似乎没有从以下方面开始:

代码语言:javascript
复制
QSqlQueryModel *model = new QSqlQueryModel();
               ^

似乎您正在尝试分配堆上的对象,而不是堆栈,这很好,所以它可能只是一个错误。

另一个注意事项是,请确保它不会泄漏内存,即为其设置父(直接或间接)或使用智能指针。我建议用前者。这将确保在删除父节点时自动删除指针。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23467643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档