私は自分のコントローラをやっています。 Qt - ハッシュテーブルに不正な値が含まれています
void ContactBookController::setCurrentlySelectedItem(QListWidgetItem *item)
{
setCurrentItem(*item);
m_window.setEditButtonsState(true);
}
、次のように
setCurrentItem()
方法は次のとおりです:私は私のListWidget内の項目をクリックすると、以下のメソッドが呼び出されます(
m_current_item
はプライベート変数である):今すぐ
void ContactBookController::setCurrentItem(const QListWidgetItem ¤t_item)
{
m_current_item = current_item;
}
、ときに私が連絡先を作成し、QListWidget
にアイテムを追加しますが、Contact
オブジェクトも作成しますが、QHash
にもバインドしていますので、QListWidgetItem
が何であるかはわかりますContact
。要するに、ここで私がやったことです:
void ContactBookController::createContact()
{
auto new_contact = m_contact_book.createContact();
if(new_contact != nullptr)
{
new_contact->setName(tr("New contact"));
}
auto list_item = m_window.createContact(new_contact->getName());
m_window.clearSelection();
m_contact_map.insert(list_item, new_contact);
}
QListWidgetItem
をクリックすると今、私は編集ボタンをアクティブにして、私が対応するContact
オブジェクトを取得したいと思います。しかし、これを行うときには、Contact
オブジェクトが正しいとは思われません。実際に、彼のメソッド(getName()
など)を使用すると、アプリケーションが即座にクラッシュします。ここで
は私がやったことです:
void ContactBookController::editContact()
{
auto list_item = m_current_item;
auto contact = m_contact_map.value(&list_item); /* doesn't work */
}
私のハッシュテーブルは、そのように宣言されています。私が間違って何をしたか
QHash<QListWidgetItem*, Contact*> m_contact_map;
任意のアイデアを?