QMainWindow:最小化到Ubuntu 18.04上的仪表板

问题描述 投票:0回答:1

我想将QMainWindow最小化为Ubuntu 18.04屏幕左侧仪表板上的图标。

当“ show()”函数被调用并且QMainWindow可见时,我在左侧破折号上看到了我的应用程序的图标。

但是,当在QMainWindow上调用“ hide()”函数时,该应用程序不再可见,这很好,但仪表板图标也消失了。我想将其最小化,以使该应用程序不再可见,但仍然有一个仪表板图标。

编辑:

最小化后,我现在可以看到该图标。

所以仍然存在一个小问题。我的应用程序一直在使用QSystemTrayIcon来显示/隐藏主窗口。当主窗口可见时,我现在将其最小化为一个图标。问题是为了再次显示主窗口,我现在需要单击仪表板最小化图标。当主窗口处于最小化状态时,QSystemTrayIcon没有响应。我希望主窗口带有Dash Board图标或QSystemTrayIcon。

这是我的代码:

connect(m_pTrayIcon,   SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
        this,          SLOT(onActivated(QSystemTrayIcon::ActivationReason)));

// Slot to handle tray icon activated signal
void MyMainWindow::onActivated(QSystemTrayIcon::ActivationReason r)
{   
    if (r == QSystemTrayIcon::Trigger)
    {
        if (!this->isVisible() || this->isMinimized())
        {
            this->show();
        }
        else
        {
            this->showMinimized();
        }
    }
}
qt ubuntu dashboard qmainwindow
1个回答
1
投票

使用时应使用setWindowState。签出文档setWindowState

下面是代码。

#include <QApplication>
#include <QPushButton>
#include <QWidget>

int main(int argc, char **argv) {
  QApplication a(argc, argv);
  QWidget w;
  QPushButton b("hideme", &w);
  w.show();
  QObject::connect(&b, &QPushButton::clicked,
                   [&w]() { w.setWindowState(Qt::WindowMinimized); });
  return a.exec();
}
© www.soinside.com 2019 - 2024. All rights reserved.