Правильное использование QProcess в Linux

Пишу главное окно, которое запускает внешние программы. При запуске внешней программы главное окно должно сворачиваться в трей, а при завершении внешнего процесса главное окно должно появиться на рабочем столе. На Windows работает так, как я ожидаю, но на Linux главное окно сворачивается в трей и появляется на рабочем столе вместе с внешней программой. Вот тестовый код.

mainwindow.h

#pragma once

#include <QMainWindow>
#include <QPushButton>
#include <QSystemTrayIcon>
#include <QProcess>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void execProcess();
    void showTrayIcon();
    void hideTrayIcon();

private:
    QProcess *process;
    QPushButton *button;
    QSystemTrayIcon *tray;
};

mainwindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), process(new QProcess),
      button(new QPushButton("Exec prog", this)),
      tray(new QSystemTrayIcon(this))
{
    QIcon icon;
    icon.addFile(":/Icons/App36.png");
    tray->setIcon(icon);
    tray->hide();

    connect(button, &QPushButton::clicked, this, &MainWindow::execProcess);
    connect(process, &QProcess::started, this, &MainWindow::showTrayIcon);
    connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, &MainWindow::hideTrayIcon);
}

MainWindow::~MainWindow()
{ }

void MainWindow::execProcess()
{
    process->start("/usr/bin/yandex-browser");
}

void MainWindow::showTrayIcon()
{
    tray->show();
    this->hide();
}

void MainWindow::hideTrayIcon()
{
    tray->hide();
    this->show();
}

Ответы (0 шт):