qt - QMainWindow:在 Ubuntu 18.04 上最小化到仪表板

标签 qt ubuntu dashboard qmainwindow

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

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

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

编辑:

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

所以还有一个小问题。我的应用程序一直在使用 QSystemTrayIcon 来显示/隐藏主窗口。当主窗口可见时,我现在将其最小化为一个图标。问题是为了再次显示主窗口,我现在需要单击仪表板最小化图标。当主窗口处于最小化状态时,QSystemTrayIcon 没有响应。我希望主窗口提供仪表板图标或 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();
        }
    }
}

最佳答案

使用应该使用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();
}

关于qt - QMainWindow:在 Ubuntu 18.04 上最小化到仪表板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59317660/

相关文章:

c++ - Qt如何捕获指示所有gui元素准备就绪的事件

qt - 如何在 QWidget 中绘制简单的水平线?

java - hadoop 连接在端口 9000 上被拒绝

bash - 在 bash 脚本中模拟 ENTER 按键

r - 如何禁用 Shiny 的 bs4Dash 仪表板控制栏(右侧边栏)

c++ - Qt 将 QImage 保存到相对位置

c++ - MSVC QT Creator - 如何正确设置 CDB?

ubuntu - 如何在 Ubuntu 18.04 上为 WeasyPrint 51 安装 Cario 1.16.0

javascript - 为什么我的滚动条与我想要的相反?

python - 本地运行 Dash 应用程序时出错,无法到达 "This site can’”