最小化Qt中同一标题栏中的按钮和上下文帮助按钮

时间:2016-09-30 16:18:13

标签: c++ qt

要在QWidget类型的Qt窗口的标题栏中创建一个帮助按钮,我喜欢这样:

myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint);

这很好用。

要在同一类窗口的标题栏中创建一个最小化按钮,我想这样:

myWindow->setWindowFlags(Qt::WindowMinimizeButtonHint);

这也可以。

我想要做的是在同一窗口的标题栏中同时提供帮助按钮和最小化按钮。为此,我试图结合旗帜:

myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint | Qt::WindowMinimizeButtonHint);

这仅显示最小化按钮,而不是帮助按钮(至少在Windows中)。如何在同一标题栏中显示两个按钮?

1 个答案:

答案 0 :(得分:4)

不幸的是,这在Windows上是不可能的。原因如下:

  • Qt::WindowMinimizeButtonHint是通过添加WS_MINIMIZEBOX窗口样式实现的,请参阅here
  • Qt::WindowContextHelpButtonHint是通过添加WS_EX_CONTEXTHELP扩展窗口样式实现的,请参阅here

来自WS_EX_CONTEXTHELP的参考:

  

WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOXWS_MINIMIZEBOX一起使用   db.collection.findAndModify()个样式。

所以,你永远不能有一个带最小化按钮[ - ]和上下文帮助按钮的窗口[?在Windows上。

如果你真的想这样做,你可能不得不使用无框窗口,并提供自己的自定义框架。

注意:此答案仅适用于Windows平台。