- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的项目创建了一个带有上下文菜单的系统托盘图标。在此菜单中,我可以单击并创建任意数量的便签(如来自 Windows 的便签)。但是,当我关闭最后一个音符(通过单击窗口关闭按钮)时,将调用 destruktor ~Traymenu()
。为什么?对象 trayMenu
仍然有一个事件成员,系统托盘图标...同样有趣的是,当我关闭笔记窗口时,析构函数 Note::~Note()
永远不会被调用。
主要.cpp:
#include "note.h"
#include "traymenu.h"
#include <QApplication>
int main(int argc, char *argv[]){
QApplication a(argc, argv);
Traymenu trayMenu;
return a.exec();
}
托盘菜单.h:
#ifndef TRAYMENU_H
#define TRAYMENU_H
#include <QSystemTrayIcon>
#include <QIcon>
#include <QPixmap>
#include <QMenu>
class Note;
class Traymenu : public QSystemTrayIcon
{
public:
Traymenu();
~Traymenu();
void createMainContextMenu();
void newNote();
void exitProgram();
private:
QSystemTrayIcon mainIcon;
QMenu mainContextMenu;
std::vector<Note *> noteList;
};
#endif // TRAYMENU_H
托盘菜单.cpp:
#include "traymenu.h"
#include "note.h"
#include <QDebug>
Traymenu::Traymenu(){
mainIcon.setIcon(QIcon(QPixmap("C:\\program.png")));
mainIcon.setVisible(true);
mainIcon.show();
createMainContextMenu();
}
Traymenu::~Traymenu(){
qDebug() << "in ~Traymenu()" << endl;
}
void Traymenu::newNote(){
Note *nN; //new pointer to object of class Note
nN = new Note(); //Initialize pointer
noteList.push_back(nN); //add newly created object to a list
}
void Traymenu::exitProgram(){
//delete this; //deletes traymenu object (icon disappears)
}
void Traymenu::createMainContextMenu(){
QAction *actionNewNote = mainContextMenu.addAction("Neue Notiz");
mainContextMenu.addSeparator();
QAction *actionExitProgram = mainContextMenu.addAction("Programm beenden");
actionNewNote->setIcon(QIcon("C:\\new.ico"));
actionNewNote->setIconVisibleInMenu(true);
QObject::connect(actionNewNote,&QAction::triggered,this,&Traymenu::newNote);
QObject::connect(actionExitProgram,&QAction::triggered,this,&Traymenu::exitProgram);
mainIcon.setContextMenu(&mainContextMenu);
}
最佳答案
默认情况下,Qt 主事件循环会在最后一个窗口关闭时退出,默认值为 QApplication
property quitOnLastWindowClosed
。
因此,在创建应用程序实例后,将其设置为 false,例如:
QApplication a;
a.setQuitOnLastWindowClosed(false);
关于c++ - 为什么调用另一个对象的析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21763852/
我开始考虑在我 future 的项目或重构中实现控制反转容器,我想知道在正确设计依赖项时哪些原则(除了 GoF 模式)可能需要牢记在心。假设我需要构建一个简单的控制台应用程序,如果它可以访问互联网,它
假设我有一个 RxC contingency table 。这意味着有 R 行和 C 列。我想要一个维度为 RC × (R + C − 2) 的矩阵 X,其中包含行的 R − 1 “主效应”以及列的
我正在尝试使用 DKMS 为正在运行的内核 (4.4) 构 build 备树覆盖。我天真的 Makefile 如下: PWD := $(shell pwd) dtbo-y += my-awsome-o
我有一个 sencha touch 项目。我是用 phonegap 2.9 构建的,并且可以正常工作 device.uuid 返回到设备 ID。当我尝试使用 3.1 device.uuid 构建时抛出
我在安装了 Xcode 4.5.1 的 Mt Lion 上运行。 默认情况下,当我构建并部署到 iOS 5.1 设备时,显示会在我旋转设备时旋转,但当我部署到 iOS 6 模拟器或运行 iOS 的 i
我正在尝试使用 Google Analytics Reporting API v4 构建多折线图。 一张图表,其中我按每天的 session 计数为每个设备(台式机/平板电脑/移动设备)设置了一条线。
我一生都无法使用 xcode 组织者“自动设备配置”中的“团队配置配置文件”在 xcode 4.0.1 中将我的应用程序构建到我的 iPad 上。 该应用程序完美地构建到模拟器,但当我构建到 iPad
我是一名优秀的程序员,十分优秀!