我使用此代码时没有任何错误。
QStandardItem *newRow;
newRow = new QStandardItem(hostname);
model2->setItem(index, 2, newRow);我想将上面的代码更改为:
QScopedPointer<QStandardItem> newRow(new QStandardItem);
model2->setItem(index, 2, newRow);但我知道这个错误:
C:\...\mainwindow.cpp:352: error: C2664: 'void QStandardItemModel::setItem(int,int,QStandardItem *)' : cannot convert parameter 3 from 'QScopedPointer<T>' to 'QStandardItem *'
with
[
T=QStandardItem
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called我怎样才能解决这个问题?
发布于 2014-08-12 05:08:04
尝试以下操作,使用get ()方法获取指针。
在我的电脑上
QStandardItem *item2 = new QStandardItem("foo");
model->setItem(4,0,item2);//works
QScopedPointer<QStandardItem> newRow(new QStandardItem("foo"));
model->setItem(4,0,newRow.take());//works too发布于 2014-08-12 08:34:00
与释放范围指针容器存储的指针的QScopedPointer<T>::take()不同,我建议使用QScopedPointer<T>::data(),它返回指针,但不重置范围指针
但是另一方面,为什么要使用QScopedPointer来存储指向QStandardItem的指针,而模型将拥有它的所有权并处理它的生命周期?
https://stackoverflow.com/questions/25256220
复制相似问题