Joe*_*ger 6 c++ qt gnome alt-tab qwidget
(见编辑)
我正在gnome下开发一个QT/c ++应用程序.
应用程序有一个主窗口和QListBox子窗口.
当我远离应用程序时,这两个窗口都显示为单独的主窗口.
如何在我(或以后的用户)使用alt-tab时只显示一个窗口?
我猜这种行为是因为一个主窗口没有剪辑子窗口 - 子窗口扩展了主窗口的边界.对于许多其他应用程序,Gnome也有很糟糕的alt-tab行为,与主窗口分开显示模态对话框.但在我的应用程序的情况下,这真的很烦人.
我想我可以制作一个包含现有窗户的巨大透明窗口.但找到一个"干净"的解决方案会更好.
(最合乎逻辑的猜测确实是它与窗口标志有关.我已经尝试了我能想到的每种合理的标志组合.这里描述了窗口类型)
编辑:该应用程序有一个QWidget作为其主窗口(非QMainWindow),QListView包含在QWidget对象中,并通过将一个点传递给主窗口来创建.使用Qt :: Tool |进行样式设置 Qt的:: FramelessWindowHint.
Edit2: Qt :: X11BypassWindowManagerHint样式确实可以从alt-tab列表中删除窗口.问题是它还使窗口"不受管理",因此它覆盖了其他窗口.每当我失去焦点时,我都可以躲藏起来 - 现在可以获得更好的解决方案.
为窗口创建窗口时,在其构造函数中或稍后通过函数调用QListBox设置窗口标志。这是一些代码片段(我省略了标题):Qt::ToolsetWindowFlags
int main(int argc, char** argv)
{
QApplication 应用程序(argc,argv);
QMainWindow mw;
MW.show();
QWidget toolWindow(&mw, Qt::Window|Qt::Tool);
QHBoxLayout 布局(&toolWindow);
toolWindow.setLayout(&layout);
QListView lv(&toolWindow);
布局.addWidget(&lv);
工具窗口.show();
返回app.exec();
}
我已经在我的 Debian sid 盒子(Gnome 2.30、metacity 2.30.1)上使用新创建的用户进行了测试:
。
如果这不是您想要的,请命名可以正常工作的软件,或者您可以自己检查。为此,请xprop在终端窗口中运行并单击您感兴趣的窗口。输出将包含窗口标志。你感兴趣的是_NET_WM_WINDOW_TYPE(ATOM). 对于工具窗口(即未在 alt-tab 中列出),此标志是:
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_UTILITY, _NET_WM_WINDOW_TYPE_NORMAL
如果带有这些标志的窗口不是工具箱窗口,则说明您的窗口管理器有问题或者您个人设置了此类行为。
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |