2011-12-18 66 views

回答

3

其實,我很驚訝你沒有得到一個崩潰。您正在堆棧上創建item0,然後將指針傳遞給QList。當該方法離開作用域時,item0被刪除,並且您的列表包含一個指向內存的腐爛區域的指針,使用來保存QStandardItem

{ 
    QStandardItem item0("test"); 
    QList<QStandardItem*> items; 
    items.insert(0, &item0); // Doesn't transfer ownership 
    model->appendRow (items); 
} // Out of scope! Oh no! 

通常你只需創建新的項目,然後用添加一些像QStandardItemModel::setItem,就像這樣:

QStandardItem *item0 = new QStandardItem("test"); 
model->setItem(0, 0, item); // transfers ownership of item0 to the model 
+1

哎呀,我現在幾次完成 - 這些天我會記住的!我一直將問題歸因於我濫用Qt,而不是濫用正常的C++哈哈。謝謝。 – 2011-12-18 22:13:39

相關問題