繁体   English   中英

无法将项目添加到 QMap

[英]Can't add items to QMap

我有个问题。 我想我正在做一些非常愚蠢的事情。 我是 C++ 和 Qt 的新手。

我有一个 class 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 创建者中的调试 output :

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 object:

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

然后您可以使用 insert() 和 remove() 操作您的 object。

您是否尝试过使用 QMap 方法insert

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM