首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象创造外包

对象创造外包
EN

Stack Overflow用户
提问于 2014-02-10 23:43:47
回答 1查看 64关注 0票数 1

我正在学习如何使用c++将文件外包给QtCreator。为什么QSystrayIcon和便笺窗口仅在主程序直接启动时才出现?如果我注释"2“并插入"1”以便调用"3“,则不会发生systrayIcon,只会在很短的时间内出现窗口,但会立即销毁。但是为什么呢?我有一个名为main main的traymenu实例,它在主菜单中仍然存在,它如何被销毁?

main.cpp:

代码语言:javascript
复制
#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:

代码语言:javascript
复制
#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:

代码语言:javascript
复制
#include "note.h"
#include "ui_note.h"

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

note::~note()
{
    delete ui;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-11 00:06:51

您有traymenu的实例,但没有note的实例。w是一个局部变量,它在执行traymenu::traymenu()后立即销毁。如果希望note实例在main()完成之前一直存在,则必须使其成为traymenu类的成员变量。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21690248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档