无法将项目添加到 QMap

Can't add items to QMap

本文关键字:QMap 添加 项目      更新时间:2023-10-16

我有一个问题。我想我是在做蠢事。我是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

欢呼,尼尔

这样做可能没有初始化QMap对象:

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

然后你可以用insert()和remove()操作你的对象

您尝试过QMap方法插入吗?

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