加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 没有窗口图标的Qt对话框(系统菜单)

发布时间:2020-12-14 02:53:11 所属栏目:Windows 来源:网络整理
导读:有没有办法创建一个窗口(如QDialog),左上角没有窗口图标?我尝试过使用透明图标,但在那里留下了空白. 编辑:下面的richardwb解决方案删除了??系统菜单,但也删除了最小化/最大化/关闭(标题按钮).这可能现在可以做,但希望有一个解决方案可以保留字幕按钮. 解决
有没有办法创建一个窗口(如QDialog),左上角没有窗口图标?我尝试过使用透明图标,但在那里留下了空白.

编辑:下面的richardwb解决方案删除了??系统菜单,但也删除了最小化/最大化/关闭(标题按钮).这可能现在可以做,但希望有一个解决方案可以保留字幕按钮.

解决方法

如果您根本不需要任何标题按钮,可以通过设置一些 window flag hints来实现:

setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint);

Qt的演示应用程序有一个示例应用程序,如果你想看看不同的组合做什么,你可以试验这些标志(Qt Demo-> Widgets-> Window Flags).

另一方面,如果您想要任何最小化/最大化/关闭按钮,您会注意到Qt强制显示系统菜单和窗口图标.我认为这是Qt对平台的概括,因为使用“关闭”按钮但没有系统菜单和窗口图标很容易找到本机Windows对话框的示例.

在这种情况下,您将需要一些Windows特定的代码,类似于此(未经测试):

#if defined(Q_WS_WIN)
    // don't forget to #include <windows.h>
    HWND hwnd = winId();
    LONG_PTR style = GetWindowLongPtr(hwnd,GWL_STYLE);
    style &= ~WS_SYSMENU; // unset the system menu flag
    SetWindowLongPtr(hwnd,GWL_STYLE,style);
    // force Windows to refresh some cached window styles
    SetWindowPos(hwnd,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
#endif

编辑:正如swongu评论的那样,只有在你想要一个没有系统菜单的关闭按钮时才有效.如果你想要一个最小化/最大化按钮但没有系统菜单,那你就不走运了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读