![](/img/trans.png)
[英]How to make a QStandardItemModel from QStringList of file paths
[英]How to pass QStandardItemModel from a function?
為了在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從一個函數傳遞到另一個函數而不通過引用調用?)
約束:
computeMyModel()
函數中計算模型。 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.