在后台编译C++程序到运行并显示在任务栏
Compile C++ Program to run in background and show in taskbar
我正在用 C++ 创建一个没有 UI 没有控制台程序到 运行 在后台。
一切正常。但是我想在任务栏隐藏图标中有一个程序的图标。
还有一种方法可以向任务栏中的图标添加选项(如设置、退出等)
详情:
编译器:MinGW 64
OS: WIndows 10
如果您使用 Qt,这将完成工作:
MyClass::MyClass(QWidget *parent)
: QDialog(parent)
{
hide(); // Gui is hidden
createTrayMenu();
}
void MyClass::createTrayMenu()
{
QAction* settingsAction = new QAction(tr("&Settings"), this);
connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettings()));
QAction* quitAction = new QAction(tr("&Exit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
QMenu * trayIconMenu = new QMenu(this); // Qt parent takes care of freeing
trayIconMenu->addAction(settingsAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
// Create Icon and add to Tray
QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon( setIcon(QIcon(QPixmap("Icon.png"))) );
trayIcon->setContextMenu(trayIconMenu);
}
hide()
删除 GUI。
trayIcon
最好是 class-member,因此您可以轻松更改图标以反映程序的状态。
拥有托盘图标实际上使您的应用程序成为 GUI 应用程序,即使它仍然有一个控制台。
您可以为此使用 GUI 框架,例如 Qt 或 wxWidgets,但您也可以试试这个项目,它只做托盘图标而没有完整的 GUI 框架:https://github.com/zserge/tray
我正在用 C++ 创建一个没有 UI 没有控制台程序到 运行 在后台。 一切正常。但是我想在任务栏隐藏图标中有一个程序的图标。
还有一种方法可以向任务栏中的图标添加选项(如设置、退出等)
详情: 编译器:MinGW 64 OS: WIndows 10
如果您使用 Qt,这将完成工作:
MyClass::MyClass(QWidget *parent)
: QDialog(parent)
{
hide(); // Gui is hidden
createTrayMenu();
}
void MyClass::createTrayMenu()
{
QAction* settingsAction = new QAction(tr("&Settings"), this);
connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettings()));
QAction* quitAction = new QAction(tr("&Exit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
QMenu * trayIconMenu = new QMenu(this); // Qt parent takes care of freeing
trayIconMenu->addAction(settingsAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
// Create Icon and add to Tray
QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);
trayIcon->setIcon( setIcon(QIcon(QPixmap("Icon.png"))) );
trayIcon->setContextMenu(trayIconMenu);
}
hide()
删除 GUI。
trayIcon
最好是 class-member,因此您可以轻松更改图标以反映程序的状态。
拥有托盘图标实际上使您的应用程序成为 GUI 应用程序,即使它仍然有一个控制台。 您可以为此使用 GUI 框架,例如 Qt 或 wxWidgets,但您也可以试试这个项目,它只做托盘图标而没有完整的 GUI 框架:https://github.com/zserge/tray