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

C++ Qt中同一标题栏中的最小化按钮和上下文帮助按钮,c++,qt,C++,Qt,要在QWidget类型的Qt窗口中的标题栏中创建帮助按钮,我需要这样做: myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint); myWindow->setWindowFlags(Qt::WindowMinimizeButtonHint); 这个很好用 要在同一类窗口的标题栏中创建最小化按钮,请执行以下操作: myWindow->setWindowFlags(Qt::WindowContextHelpButton

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

myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint);
myWindow->setWindowFlags(Qt::WindowMinimizeButtonHint);
这个很好用

要在同一类窗口的标题栏中创建最小化按钮,请执行以下操作:

myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint);
myWindow->setWindowFlags(Qt::WindowMinimizeButtonHint);
这也很好

我想做的是在同一窗口的标题栏中同时有一个帮助按钮和一个最小化按钮。为此,我尝试将旗帜组合起来:

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

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

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

  • Qt::WindowMinimizeButtonHint
    是通过添加窗口样式实现的,请参阅
  • Qt::WindowContextHelpButtonHint
    通过添加扩展窗口样式来实现,请参阅
从以下参考中:

WS_EX_CONTEXTHELP
不能与
WS_MAXIMIZEBOX
WS_MINIMIZEBOX
样式

因此,在windows上永远不能有一个带有最小化按钮[-]和上下文帮助按钮[?]的窗口

如果您确实想这样做,您可能必须使用无框架窗口,并提供自己的自定义框架

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