对象创建和添加到列表

时间:2014-02-13 00:03:16

标签: c++

对象创建:我想创建一个类Note的对象,即QWidget。我怎样才能做到这一点?我只能显示已被声明为Traymenu类的私有成员的Note bla。这可以通过单击trayMenu的上下文菜单中的“新笔记”来实现。我想为每次单击创建一个新注释,并将其添加到trayMenu中的Notes列表中以保持注释活着,但不知道如何定义我自己的类的对象元素列表注意。

所以我的两个问题是:如何在运行时创建一个新注释以及如何在属于trayMenu的列表中保持活动状态。

如果我注释掉2行Note nwNtnwNt.show(),编译器会说qglobals.h中的某些内容是私有的。

traymenu.h:

#ifndef TRAYMENU_H
#define TRAYMENU_H

#include <QSystemTrayIcon>
#include <QIcon>
#include <QPixmap>
#include <QMenu> //in use for context menu

#include "note.h"

class Traymenu : public QSystemTrayIcon
{
public:
    Traymenu();
    ~Traymenu();
    void createMainContextMenu();
    void newNote();

private:
    QSystemTrayIcon mainIcon;
    QMenu mainContextMenu;
    Note bla;

};
#endif // TRAYMENU_H

traymenu.cpp:

#include "traymenu.h"
#include <QDebug>

Traymenu::Traymenu(){
    mainIcon.setIcon(QIcon(QPixmap("C:\\papersavers.png")));
    mainIcon.setVisible(true);
    mainIcon.show();

    createMainContextMenu();
}

Traymenu::~Traymenu(){
}

void Traymenu::createMainContextMenu(){
    QAction *actionNewNote = mainContextMenu.addAction("Neue Notiz");  

    QObject::connect(actionNewNote,&QAction::triggered,this,&Traymenu::newNote);


    mainIcon.setContextMenu(&mainContextMenu);
}

void Traymenu::newNote(){
    qDebug() << "in newNote()" << endl;
    //Note nwNt;
    //nwNt.show();
    bla.show()
}

note.h:

#ifndef NOTE_H
#define NOTE_H

#include <QWidget>

namespace Ui{
class Note;
}

class Note : public QWidget
{
public:
    Note(QWidget *parent = 0);
    ~Note();

private:
    Q_OBJECT
    Ui::Note *ui;
};

#endif // NOTE_H

note.cpp:

#include "note.h"
#include "ui_note.h"

Note::Note(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Note)
{
    ui->setupUi(this);
}

Note::~Note()
{
    delete ui;
}

0 个答案:

没有答案