【问题标题】:How to deactivate window in Qt如何在 Qt 中停用窗口
【发布时间】:2012-03-19 14:41:06
【问题描述】:

我正在尝试在 Qt 中创建一个可停靠窗口(它位于屏幕边缘,宽度为 4px,始终位于顶部,当您将其悬停时它会滑出)。我必须使用 WindowFlag BypassX11WindowManager (为了隐藏任务栏提示,从窗口管理器禁用移动/调整大小/等)。我使用这些标志:

Qt::FramelessWindowHint
Qt::CustomizeWindowHint
Qt::X11BypassWindowManagerHint
Qt::WindowStaysOnTopHint

当我需要激活我的扩展坞时,我使用 activateWindow() 方法。但是,我不知道如何停用它。

有没有办法强制我的窗口停用?现在我只能通过单击另一个窗口然后返回到显示停靠栏之前处于活动状态的窗口来完成。

【问题讨论】:

    标签: linux qt window


    【解决方案1】:

    如果您不希望它出现在某些位置,您应该可以使用 ->hide() 简单地隐藏它。

    顺便说一下,我假设您知道 QDockWidget/ 类也可以帮助您。从上面看不清楚你是否使用它。

    【讨论】:

    • 我知道 QDockWidget 类,但它似乎有些不同 - 只是可以从窗口取消固定的面板。我不认为 QDockWidget 可以单独存在而不创建窗口,我错了吗?老实说,我从未尝试过使用它。隐藏它不是一种方法 - 它必须一直可见,只需移动到屏幕边缘,以便只有 Dock 的边缘可见。而且我还需要这个 Dock 作为主应用程序窗口,而不仅仅是一个小窗口。
    • 说实话,我也没有使用过停靠小部件!你的问题并没有真正描述它需要“只有码头的边缘是可见的”。您可以做的一件事是让它仍然可见,将整个内部内容集放在一个 vbox 或类似内容中,然后隐藏 vbox,然后将窗口大小调整为“几乎为空”的 vibox 的大小。
    • 我尝试了 QDockWidget,如果它是独立的,它的行为就像任何其他窗口一样。任务栏提示等。在 Windows 上可能是隐藏的,但在 Windows WindowFlag Qt::Tool 上运行良好。
    • 编辑迟到:(我试过 QDockWidget,如果它是独立的,它的行为就像任何其他窗口一样。TaskBar 提示等可能在 Windows 上隐藏,但在 Windows WindowFlag Qt::Tool 上运行良好。不幸的是在 Linux 上它没有。我还尝试了各种 WindowFlags 组合,但似乎我无法做到这一点。这与窗口的哪个部分是可见的无关 - 通过设置适当的坐标总是可行的。我需要的只是一种告诉从应用程序中停用的窗口 - 类似于在其中单击 QPushButton 后使窗口停用的问题。如果我找到它,我的问题将得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2012-07-20
    • 2010-12-03
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多