我正在学习如何使用c++将文件外包给QtCreator。为什么QSystrayIcon和便笺窗口仅在主程序直接启动时才出现?如果我注释"2“并插入"1”以便调用"3“,则不会发生systrayIcon,只会在很短的时间内出现窗口,但会立即销毁。但是为什么呢?我有一个名为main main的traymenu实例,它在主菜单中仍然存在,它如何被销毁?
main.cpp:
#include "traymenu.h"
#include "note.h"
#include <QApplication>
#include <QSystemTrayIcon>
#include <QIcon>
#include <QPixmap>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
traymenu mainmenu; //1
// note w; //2
// w.show();
// QSystemTrayIcon tray;
// tray.setIcon(QIcon(QPixmap("C:\\testicon.png")));
// tray.setVisible(true);
return a.exec();
}traymenu.cpp:
#include "traymenu.h"
#include "note.h"
#include <QSystemTrayIcon>
#include <QIcon>
#include <QPixmap>
traymenu::traymenu(QWidget *parent)
{
note w; //3
w.show();
QSystemTrayIcon tray;
tray.setIcon(QIcon(QPixmap("C:\\testicon.png")));
tray.setVisible(true);
tray.show();
}
traymenu::~traymenu()
{
}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;
}发布于 2014-02-11 00:06:51
您有traymenu的实例,但没有note的实例。w是一个局部变量,它在执行traymenu::traymenu()后立即销毁。如果希望note实例在main()完成之前一直存在,则必须使其成为traymenu类的成员变量。
https://stackoverflow.com/questions/21690248
复制相似问题