私の英語は申し訳ありません。私は同じコードを持っている:ポインタの代わりにスマートポインタ
auto windowsStack = m_windowManger->windowsStack();
auto ListModel = new QStandardItemModel();
while(!windowsStack.empty())
{
auto window = windowsStack.top();
auto title = QString::fromUtf8(window->title().c_str());
auto Items = new QStandardItem(title);
ListModel->appendRow(Items);
windowsStack.pop();
}
ui->listView->setModel(ListModel);
すべてが正常に動作し、私の仕事は、スマートポインタへのポインタを交換することです。私は、何度も私の決定にそれをやった:
auto windowsStack = m_windowManger->windowsStack();
auto ListModel = std::shared_ptr<QStandardItemModel>();
while(!windowsStack.empty())
{
auto window = std::shared_ptr<Window>(windowsStack.top());
auto title = QString::fromUtf8(window->title().c_str());
auto Items = std::shared_ptr<QStandardItem>(new QStandardItem(title));
ListModel->appendRow(Items.get());
windowsStack.pop();
}
ui->listView->setModel(ListModel.get());
をしかし、最終的には、私がメッセージを取得:プログラムが予期せず終了しました。
ListModel->appendRow(Items.get());
新バージョン:プロンプトで、このラインで
auto ListModel = std::make_shared<QStandardItemModel>();
while(!windowsStack.empty())
{
auto window = windowsStack.top();
windowsStack.pop();
auto title = QString::fromUtf8(window->title().c_str());
ListModel->appendRow(new QStandardItem(title));
}
ui->listView->setModel(ListModel.get());
ありがとうございました。エラーはなくなりましたが、QListViewは何も追加されていません。それは裸のポインタで動作しますが。 –
あなたはまだ最後の行 'ui-> listView-> setModel(ListModel.get());)が必要です。'傷ついたループを書き直していただけです。 –
私は最後の行を削除しませんでした。それが起こりました。上の質問に新しいバージョンを追加しました。 何もqlistviewに追加されませんでした。 –