Мне нужно создать простое приложение, которое отображает значок в системном окне и меню, из которого вы можете выполнять некоторые операции.проблема в том, что statusicon закрывается сразу после создания.Чего не хватает?Я положил сон, чтобы убедиться, что он был создан.в течение 3 секунд что-то появляется в systray, даже если это не тот значок, который я установил.
Init.cc
#include <gtkmm/main.h>
#include "Tray.h"
int main(int argc, char *argv[]) {
Gtk::Main kit(argc, argv);
printf("Statuicon starting\n");
Tray tray;
printf("Statuicon started\n");
return 0;
}
Tray.cc
#include "Tray.h"
Tray::Tray() {
set(Gtk::Stock::OK);
signal_activate().connect(sigc::mem_fun(*this, &Tray::on_statusicon_activated));
signal_popup_menu().connect(sigc::mem_fun(*this, &Tray::on_statusicon_popup));
set_visible(true);
printf("Statusicon created\n");
sleep(3);
}
Tray::~Tray() {}
void Tray::on_statusicon_popup(guint button, guint activate_time) {
printf("popup!");
}
void Tray::on_statusicon_activated() {
printf("active!");
}
Лоток.h
#ifndef GTKMM_TRAY_H
#define GTKMM_TRAY_H
#include <gtkmm.h>
#include <unistd.h>
using namespace std;
class Tray : public Gtk::StatusIcon {
public:
Tray();
~Tray();
private:
virtual void on_statusicon_popup(guint button, guint activate_time);
virtual void on_statusicon_activated();
};
#endif //GTKMM_TRAY_H