要在 QWidget 类型的 Qt 窗口的标题栏中创建帮助按钮,我这样做:
myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint);
Run Code Online (Sandbox Code Playgroud)
这工作正常。
要在同一类型窗口的标题栏中创建最小化按钮,我这样做:
myWindow->setWindowFlags(Qt::WindowMinimizeButtonHint);
Run Code Online (Sandbox Code Playgroud)
这也很好用。
我想要做的是在同一窗口的标题栏中同时有一个帮助按钮和一个最小化按钮。为此,我尝试组合标志:
myWindow->setWindowFlags(Qt::WindowContextHelpButtonHint | Qt::WindowMinimizeButtonHint);
Run Code Online (Sandbox Code Playgroud)
这仅显示最小化按钮,而不显示帮助按钮(至少在 Windows 中)。如何在同一个标题栏中显示两个按钮?
不幸的是,这在 Windows 上是不可能的。原因如下:
Qt::WindowMinimizeButtonHint通过添加WS_MINIMIZEBOX窗口样式来实现,请参见此处。Qt::WindowContextHelpButtonHint通过添加WS_EX_CONTEXTHELP扩展窗口样式来实现,请参见此处。从参考为WS_EX_CONTEXTHELP:
WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOXorWS_MINIMIZEBOX样式一起使用。
所以,你永远不可能有一个带有最小化按钮 [-] 和上下文帮助按钮 [? ] 在窗户上。
如果您真的想这样做,您可能必须使用无框窗口,并提供您自己的自定义框架。
注意:此答案仅适用于 Windows 平台。