Не могу добавить элементы в QMap - PullRequest
1 голос
/ 17 августа 2011

У меня проблема. Я предполагаю, что делаю что-то действительно глупое. Я новичок в C ++ и Qt.

У меня есть класс SavedVar. Я пытаюсь добавить ключ / значение в закрытый член Qmap. Когда я вызываю SavedVar :: addVar (), программа вылетает. SavedVar :: addvar () получает 'id' и 'notes' правильно.

#include <QObject>
#include <QMap>
#include "variation.h"
#include <QTableWidget>
#include "mainwindow.h"

class SavedVar : public QObject
{
    Q_OBJECT
public:
    explicit SavedVar(QObject *parent = 0);
    void addVar(QString id, QString notes);
    void saveVar(QString varText );
    void removeSavedVar(QList <QTableWidgetItem*>  &varList);
    QString generateSaveFile();
    void loadVarFile(QString filename);
    const QMap<QString, QString>*getVmapPtr();

private:
    QMap <QString, QString>  vmap; 

}; 

void SavedVar::addVar(QString id, QString notes)
{
    vmap[id]= notes;
}

Я изо всех сил пытаюсь понять выходные данные отладки в Qt creator:

0   QBasicAtomicInt::operator!= qbasicatomic.h  75  0x4116e3    
1   QMap<QString, QString>::detach  qmap.h  202 0x41ede2    
2   QMap<QString, QString>::operator[]  qmap.h  526 0x41d241    
3   SavedVar::addVar    savedvar.cpp    17  0x44afc9    
4   SavedVar::loadVarFile   savedvar.cpp    82  0x44b4b8    
5   MainWindow::load_data   mainwindow.cpp  190 0x40d5fe

Приветствия

Нил

Ответы [ 2 ]

2 голосов
/ 11 февраля 2013

Возможно, вы не инициализировали объект QMap следующим образом:

vmap = new(QMap <QString, QString>);

Затем вы можете манипулировать вашим объектом с помощью insert () и remove ().

0 голосов
/ 17 августа 2011

Вы пробовали использовать метод QMap insert ?

void SavedVar::addVar(QString id, QString notes)
{
    vmap.insert(id, notes);
}
...