Имя приложения отображается с его расширением, когда showMessage QSystemTrayIcon используется в Windows 10 - PullRequest
0 голосов
/ 17 октября 2019

Я использую QSystemTrayIcon для отображения уведомлений в Windows 10. Наряду с уведомлением также отображается имя приложения. Проблема здесь в том, что имя приложения отображается вместе с расширением (.exe).

Screenshot

Как удалить расширение (.exe) изуведомление?

1 Ответ

1 голос
/ 17 октября 2019

Попробуйте добавить эту строку в файл .pro:

QMAKE_TARGET_DESCRIPTION = "Whatever"

Следует изменить имя процесса (как в уведомлениях, так и в диспетчере задач) на «Все».

Больше таких переменных можно найти здесь: Документация по переменным Qmake

Примечание из документации:

Используется только если VERSION или *Переменная 1015 * установлена, а переменные RC_FILE и RES_FILE не установлены.


Пошаговые инструкции по созданию тестового приложения

  1. Создание проекта приложения Qt Widgets, содержащего 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();
    }
В 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, и имя процесса в диспетчере задач и уведомлениях - «Что угодно». Вы можете заставить приложение отображать уведомление, нажав на иконку в трее. Уведомление должно выглядеть примерно так:

screenshot

...