首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

如何让窗口显示的时候出现在最顶层

2012-10-17 
怎么让窗口显示的时候出现在最顶层在linux下,如果主窗口是当前的激活的窗口,那么新窗口就会弹出,显示在最

怎么让窗口显示的时候出现在最顶层
在linux下,如果主窗口是当前的激活的窗口,那么新窗口就会弹出,显示在最顶层,反则,创建新窗口的时候不会自动出现在最顶层,用了QWidget::activatedWindows()还是没办法,另外我要的不是window->setWindowFlags(Qt::WindowStaysOnTopHint)这个效果,而是只是刚出现的时候在最顶层,随后可以被其他窗口覆盖掉。求大神指点。。。

ps:新窗口不是主窗口的子窗口。


[解决办法]
刚才同事提醒了我一下,正好这个问题我们解决了,希望对楼主有用。

用X11的代码实现。

#include <QX11Info>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>

/*
* 显示窗口是调用以下的代码就可以了 ,但是在编译时记得链接x11库
*/

void slot()
{
XClientMessageEvent event;

memset( &event, '\0', sizeof( XClientMessageEvent ) );

event.type = ClientMessage;
Display *display =QX11Info::display();
event.message_type = XInternAtom( display, "_NET_ACTIVE_WINDOW", False );
event.display = display;
event.window = DefaultRootWindow(display);
event.format = 32;
event.data.l[ 0 ] = 1;
event.data.l[ 1 ] = 0;
event.data.l[ 2 ] = 0;
event.data.l[ 3 ] = 0;
event.data.l[ 4 ] = 0;

XSendEvent( display, DefaultRootWindow(display), False,
SubstructureRedirectMask, (XEvent*)&event );
}

热点排行