如果您不需要任何标题按钮,可以通过设置一些窗口标志提示来实现此目的:
(参考链接)。
setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint);
Qt的演示应用程序有一个样例应用程序,让您可以尝试这些标志(Qt Demo->Widgets->Window Flags),如果您想看看不同组合的效果。
另一方面,如果您想要任何最小化/最大化/关闭按钮,您会注意到Qt强制系统菜单和窗口图标显示出来。我认为这是Qt将平台泛化了一些,因为很容易找到具有关闭按钮但没有系统菜单和窗口图标的本机Windows对话框的示例。
在这种情况下,您需要一些特定于Windows的代码,类似于以下代码(未经测试):
#if defined(Q_WS_WIN)
HWND hwnd = winId();
LONG_PTR style = GetWindowLongPtr(hwnd, GWL_STYLE);
style &= ~WS_SYSMENU;
SetWindowLongPtr(hwnd, GWL_STYLE, style);
SetWindowPos(hwnd, 0, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
#endif
编辑:正如swongu的评论所述,只有在您想要一个没有系统菜单的关闭按钮时,此方法才有效。如果您想要最小化/最大化按钮但没有系统菜单,则需要另寻他法。