我正在使用 QSystemTrayIcon 在 Windows 10 中显示通知。与通知一起,还会显示应用程序名称。这里的问题是应用程序名称与扩展名(.exe)一起显示。
如何从通知中删除扩展名(.exe)?
我正在使用 QSystemTrayIcon 在 Windows 10 中显示通知。与通知一起,还会显示应用程序名称。这里的问题是应用程序名称与扩展名(.exe)一起显示。
如何从通知中删除扩展名(.exe)?
尝试将此行添加到您的.pro
文件中:
QMAKE_TARGET_DESCRIPTION = "Whatever"
它应该将进程名称(在通知和任务管理器中)更改为“随便”。
更多类似的变量可以在这里找到:Qmake 变量文档
文档中的注释:
这仅在设置
VERSION
orRC_ICONS
变量且未设置RC_FILE
and变量时使用。RES_FILE
创建 Qt Widgets Application 项目,包含一个QWidget
基于小部件
在项目文件夹中创建images
目录,将一个图标文件放入其中(对于这个例子,让它成为icon.ico
)
将资源文件添加到项目中
向该资源文件添加前缀/
,然后“添加文件”,选择./images/icon.ico
将代码更改为main.cpp
以下内容:
#include "widget.h"
#include <QApplication>
#include <QIcon>
int main(int argc, char *argv[])
{
QCoreApplication::setApplicationName(APP_NAME);
QApplication a(argc, argv);
a.setWindowIcon(QIcon(":/images/icon.ico"));
Widget w;
w.setWindowTitle(qApp->applicationName());
w.setWindowIcon(qApp->windowIcon());
w.show();
return a.exec();
}
widget.cpp
以下内容: #include "widget.h"
#include "ui_widget.h"
#include <QSystemTrayIcon>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QSystemTrayIcon *trayIcon = new QSystemTrayIcon(qApp->windowIcon(), this);
trayIcon->show();
connect(trayIcon, &QSystemTrayIcon::activated, [=]() {
trayIcon->showMessage("Title", "Message");
});
}
Widget::~Widget()
{
delete ui;
}
.pro
) 文件的底部添加以下内容: DEFINES += APP_NAME=\\\"AppName\\\"
QMAKE_TARGET_DESCRIPTION = "Whatever"
win32:RC_ICONS += images/icon.ico
保存,运行 qmake (Build -> Run qmake),重建项目
启动应用程序。现在窗口标题应该是“AppName”,它来自 APP_NAME 定义,窗口和托盘图标 - icon.ico,以及任务管理器和通知中的进程名称 - “Whatever”。您可以通过单击托盘图标使应用程序显示通知。通知应如下所示: