无法向 QMap 添加项目

发布于 2024-11-29 16:18:56 字数 1277 浏览 3 评论 0原文

我有一个问题。我想我正在做一些非常愚蠢的事情。我是 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 创建者中的调试输出:

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

干杯,

尼尔

I have a problem. I assume I'm doing something really dumb. I'm new to C++ and Qt.

I have a class SavedVar. I'm trying to add a key/value to a private member Qmap. When I call SavedVar::addVar(), the program crashes. SavedVar::addvar() is receiving 'id' and 'notes' correctly.

#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;
}

I'm struggling to understand the debug output in 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

Cheers,

Neil

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆躺在深渊里 2024-12-06 16:18:56

也许您没有通过这样做初始化 QMap 对象:

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

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

Maybe you didn't initialize the QMap object by doing so :

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

Then you can manipulate your object with insert() and remove().

冬天旳寂寞 2024-12-06 16:18:56

您是否尝试过使用 QMap 方法插入

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

Have you tryed with the QMap method insert ?

void SavedVar::addVar(QString id, QString notes)
{
    vmap.insert(id, notes);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文