C++ Qt-最小化和最大化应用程序,无需标准标题栏按钮
我有一个Qt应用程序,其中只有一个小部件不是C++ Qt-最小化和最大化应用程序,无需标准标题栏按钮,c++,qt,minimize,qmainwindow,C++,Qt,Minimize,Qmainwindow,我有一个Qt应用程序,其中只有一个小部件不是MainWindow,而是QLabel。它没有标题栏(通过设置窗口标志(Qt::FramelessWindowHint)获得),因此标准的最小化和最大化按钮不可用。但是在小部件的一侧有一个侧边栏,我们提供了一个最小化按钮,该按钮应该像标准的最小化按钮一样工作 我该怎么做 我尝试了和的解决方案。两者都不起作用。当然,我可以通过单击最小化按钮隐藏应用程序。问题是,如何通过标准机制恢复它 场景: 在Mac上,单击dock图标。谢天谢地,OSX原生API可以在
MainWindow
,而是QLabel
。它没有标题栏(通过设置窗口标志(Qt::FramelessWindowHint)
获得),因此标准的最小化和最大化按钮不可用。但是在小部件的一侧有一个侧边栏,我们提供了一个最小化按钮,该按钮应该像标准的最小化按钮一样工作
我该怎么做
我尝试了和的解决方案。两者都不起作用。当然,我可以通过单击最小化按钮隐藏应用程序。问题是,如何通过标准机制恢复它
场景:
/Applications
中双击应用程序图标,或在启动板中单击应用程序图标。我如何获得此通知?代码甚至没有到达main.cpp
,如果它被隐藏,我可以从那里取消隐藏它
平台-Qt 5.3.1,32位。这不是答案,但它可能有助于确定触发了哪些事件(第1、2和3点) 而不是
QApplication myapp(argc,argv)
一旦您确定触发的事件,您就差不多完成了:您需要告诉您的新应用程序恢复Qlabel
的大小(有很多方法可以做到这一点,因此提供您的实现,您可能会得到更集中的帮助)
对于第4点,由于操作系统之间的行为不同,这是另一回事,如在Windows中,双击某个应用程序将启动该应用程序的另一个实例(在OSx上,它将启动第一个打开的应用程序)。您可能会在这个项目中找到适合您的东西您可以尝试在接受最小化之前
saveGeometry
和saveState
,然后进行restoregometry
和restoreState
您能给出一个示例代码吗,或者一个最小的工作示例?原则上,如果发生了什么事情,它应该被事件(QEvent*ev)
捕获,因此通过在QLabel
中重新实现此方法,您应该能够通过检查ev->type()
值来查看追加的内容和事件。是的,问题是如何最小化它(而不是关闭它),以及如何在我前面提到的多种情况下恢复它。我还是不明白你的意思。一个小的示例代码会很好..谢谢Bibi。一些指针会有帮助,这对1、2和3有什么帮助?代码甚至没有进入main.cpp
在这3种情况下,单击Launchpad中的图标如何进入event
方法?这是因为newapp
是一个QApplication
并且它从桌面接收事件(以下是列表:)。然后由newapp
来处理它(即隐藏或显示QLabel
)在我的情况下,我应该查找什么事件类型,即在应用程序中双击应用程序图标或在启动板中单击应用程序图标?事实上,有很多事件(如上面的链接所示)。我发布的代码是为了找出哪个是哪个。一旦确定了这一点,就可以实现应用程序对此类信号的反应。请张贴一些你的代码,以便我们能迅速找到答案。好的。我正在尝试使用QEvent::ApplicationActivate
。到目前为止,它是在Mac中工作的,检测停靠图标点击以及启动板/应用程序点击。我将在Windows上试用。
newapp myapp(argc,argv);
QApplication myapp(argc,argv)