对象创建:我想创建一个类Note的对象,即QWidget。我怎样才能做到这一点?我只能显示已被声明为Traymenu类的私有成员的Note bla
。这可以通过单击trayMenu的上下文菜单中的“新笔记”来实现。我想为每次单击创建一个新注释,并将其添加到trayMenu中的Notes列表中以保持注释活着,但不知道如何定义我自己的类的对象元素列表注意。
所以我的两个问题是:如何在运行时创建一个新注释以及如何在属于trayMenu的列表中保持活动状态。
如果我注释掉2行Note nwNt
和nwNt.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;
}