gpt4 book ai didi

c++ - 如何从函数传递 QStandardItemModel?

转载 作者:行者123 更新时间:2023-11-30 02:43:47 26 4
gpt4 key购买 nike

为了在 QTableView 中显示一些数据,我使用一个函数来计算 QStandardItemModel 并将其发送回调用函数。

函数调用:

QStandardItemModel MyModel = computeMyModel();
ui->tV->setModel(&MyModel);

调用函数

QStandardItemModel computeMyModel()
{
QStandardItemModel newModel;
//........... Steps to compute newModel
return newModel;
}

当我尝试运行代码时出现以下错误。

error C2248: 'QStandardItemModel::QStandardItemModel' : cannot access private member declared in class 'QStandardItemModel'

如何解决这个问题?(如何在不通过引用调用的情况下成功地将myModel从一个函数传递到另一个函数?)

约束:

  1. 我必须仅在 computeMyModel() 函数中计算模型。
  2. 我不喜欢通过引用调用将模型从调用函数传递到 computeMyModel()

最佳答案

试试这个:

QStandardItemModel* computeMyModel()
{
int counter = 0;
QStandardItemModel *model = new QStandardItemModel;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
{
counter++;
QStandardItem *item = new QStandardItem(QString::number(counter));
model->setItem(i,j,item);


}
return model;
}

使用:

QStandardItemModel *model = computeMyModel();

ui->tableView->setModel(model);

更新。

没有。这将是正常的,因为你分配内存并返回指针,你的指针有这个内存地址并且它会一直拥有它直到有东西删除它。要证明,请参阅此代码片段。如您所见,您在函数中分配内存,返回指针,使用该指针设置数据并调用 setModel。它编译并工作。

功能:

QStandardItemModel* computeMyModel()
{
QStandardItemModel *model = new QStandardItemModel;
return model;
}

使用

int counter = 0;
QStandardItemModel *model = computeMyModel();

for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
{
counter++;
QStandardItem *item = new QStandardItem(QString::number(counter));
model->setItem(i,j,item);
}
ui->tableView->setModel(model);

关于c++ - 如何从函数传递 QStandardItemModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25868963/

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