我有一个名为Load的类,它从数据库加载数据。另一个类是在表中显示数据。在函数中,我将返回QSqlQueryModel,即:由于无法编译它,所以目前它只是基本的:
QSqlQueryModel PersistenceAdapter::loadServerList(){
login();
cout<<"Loading data"<<endl;
QSqlQueryModel model = new QSqlQueryModel();
logout();
return model;
}头文件中的定义为:
QSqlQueryModel loadServerList();在另一堂课中,我收到的是:
setServersList(PersistenceAdapter.loadServerList());这一条的定义是:
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&)’
如果有人能帮我这个忙.
发布于 2014-05-05 08:20:56
/usr/include/qt4/QtCore/qabstractitemmodel.h:360:5:错误:‘QAbstractTableModel::QAbstractTableModel(const QAbstractTableModel&)是私有的
该错误消息意味着您试图复制一个QObject,它不完全具有“值”语义,但更像是“标识”。QObjects本质上是不可复制的。原因是,在这种情况下,您将如何处理父/子层次结构?
这给您提供了一些提示,说明您试图滥用QObject子类实例,即将其声明为堆栈对象而不是堆。
这是代码中有问题的地方:
QSqlQueryModel model = new QSqlQueryModel();这似乎没有从以下方面开始:
QSqlQueryModel *model = new QSqlQueryModel();
^似乎您正在尝试分配堆上的对象,而不是堆栈,这很好,所以它可能只是一个错误。
另一个注意事项是,请确保它不会泄漏内存,即为其设置父(直接或间接)或使用智能指针。我建议用前者。这将确保在删除父节点时自动删除指针。
https://stackoverflow.com/questions/23467643
复制相似问题