我想将 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/