0

我正在使用 QSystemTrayIcon 在 Windows 10 中显示通知。与通知一起,还会显示应用程序名称。这里的问题是应用程序名称与扩展名(.exe)一起显示。

截屏

如何从通知中删除扩展名(.exe)?

4

1 回答 1

2

尝试将此行添加到您的.pro文件中:

QMAKE_TARGET_DESCRIPTION = "Whatever"

它应该将进程名称(在通知和任务管理器中)更改为“随便”。

更多类似的变量可以在这里找到:Qmake 变量文档

文档中的注释:

这仅在设置VERSIONorRC_ICONS变量且未设置RC_FILEand变量时使用。RES_FILE


创建测试应用程序的分步说明

  1. 创建 Qt Widgets Application 项目,包含一个QWidget基于小部件

  2. 在项目文件夹中创建images目录,将一个图标文件放入其中(对于这个例子,让它成为icon.ico

  3. 将资源文件添加到项目中

  4. 向该资源文件添加前缀/,然后“添加文件”,选择./images/icon.ico

  5. 将代码更改为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();
    }
  1. 将代码更改为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;
    }
  1. 在项目 ( .pro) 文件的底部添加以下内容:
    DEFINES +=  APP_NAME=\\\"AppName\\\"
    
    QMAKE_TARGET_DESCRIPTION = "Whatever"
    
    win32:RC_ICONS += images/icon.ico
  1. 保存,运行 qmake (Build -> Run qmake),重建项目

  2. 启动应用程序。现在窗口标题应该是“AppName”,它来自 APP_NAME 定义,窗口和托盘图标 - icon.ico,以及任务管理器和通知中的进程名称 - “Whatever”。您可以通过单击托盘图标使应用程序显示通知。通知应如下所示:

截屏

于 2019-10-17T13:56:18.533 回答