我想将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();
}
}
}
使用时应使用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();
}