当 QSystemTrayIcon 的 showMessage 在 Windows 10 中使用时,应用程序名称及其扩展名显示
Application name is displayed with its extension when QSystemTrayIcon's showMessage is used in Windows 10
我正在使用 QSystemTrayIcon 在 Windows 10 中显示通知。
与通知一起,还会显示应用程序名称。
这里的问题是应用程序名称与扩展名 (.exe) 一起显示。
如何从通知中删除扩展名(.exe)?
尝试将此行添加到您的 .pro
文件中:
QMAKE_TARGET_DESCRIPTION = "Whatever"
它应该将进程名称(在通知和任务管理器中)更改为“Whatever”。
可以在此处找到更多类似的变量:Qmake Variables Documentation
文档注释:
This is only utilized if the VERSION
or RC_ICONS
variable is set and the RC_FILE
and RES_FILE
variables are not set.
Step-by-step 创建测试应用程序的说明
创建 Qt Widgets 应用程序项目,包含一个基于 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(构建->运行qmake),重建项目
启动应用程序。现在 window 标题应该是“AppName”,它来自 APP_NAME 定义,window 和托盘图标 - icon.ico,以及任务管理器和通知中的进程名称 - “任何”。您可以通过单击托盘图标使应用程序显示通知。通知应如下所示:
我正在使用 QSystemTrayIcon 在 Windows 10 中显示通知。 与通知一起,还会显示应用程序名称。 这里的问题是应用程序名称与扩展名 (.exe) 一起显示。
如何从通知中删除扩展名(.exe)?
尝试将此行添加到您的 .pro
文件中:
QMAKE_TARGET_DESCRIPTION = "Whatever"
它应该将进程名称(在通知和任务管理器中)更改为“Whatever”。
可以在此处找到更多类似的变量:Qmake Variables Documentation
文档注释:
This is only utilized if the
VERSION
orRC_ICONS
variable is set and theRC_FILE
andRES_FILE
variables are not set.
Step-by-step 创建测试应用程序的说明
创建 Qt Widgets 应用程序项目,包含一个基于
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(构建->运行qmake),重建项目
启动应用程序。现在 window 标题应该是“AppName”,它来自 APP_NAME 定义,window 和托盘图标 - icon.ico,以及任务管理器和通知中的进程名称 - “任何”。您可以通过单击托盘图标使应用程序显示通知。通知应如下所示: