gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:05:03 24 4
gpt4 key购买 nike

我有一个名为 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);
}

错误是:

PersistenceAdapter.cpp:66:48: error: conversion from ‘QSqlQueryModel*’ to non-scalar type ‘QSqlQueryModel’ requested /usr/include/qt4/QtCore/qabstractitemmodel.h: In copy constructor ‘QSqlQueryModel::QSqlQueryModel(const QSqlQueryModel&)’: /usr/include/qt4/QtCore/qabstractitemmodel.h:360:5: error: ‘QAbstractTableModel::QAbstractTableModel(const QAbstractTableModel&)’ is private /usr/include/qt4/QtSql/qsqlquerymodel.h:59:20: error: within this context PersistenceAdapter.cpp: In member function ‘QSqlQueryModel PersistenceAdapter::loadServerList()’: PersistenceAdapter.cpp:70:12: note: synthesised method ‘QSqlQueryModel::QSqlQueryModel(const QSqlQueryModel&)’ first required here

如果有人能帮助我,我将不胜感激......

最佳答案

/usr/include/qt4/QtCore/qabstractitemmodel.h:360:5: error: ‘QAbstractTableModel::QAbstractTableModel(const QAbstractTableModel&)’ is private

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

这给了你一些暗示,表明你正试图滥用你的 QObject 子类实例,即将它声明为堆栈对象而不是堆。

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

QSqlQueryModel  model = new QSqlQueryModel();

这似乎缺少开头如下:

QSqlQueryModel *model = new QSqlQueryModel();
^

看起来您正试图在堆上而不是堆栈上分配对象,这很好,所以这可能只是一个拼写错误。

另外要注意的是,请确保它不会泄漏内存,即为其设置父级(直接或间接),或使用智能指针。我会建议前者。这将保证您的指针在父级被删除时自动删除。

关于c++ - 如何从 C++ 中的函数返回 QSqlQueryModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467643/

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