2010-08-06 60 views
1

我想使用Qt来控制一些其他窗口创建问题,所以我写这样的代码:QWidget的在X11

#define protected public //just for test 
... 
WId id = 0x00000001 //some real wid 
QWidget w; 
w.create(id, false, false); 
w.hide(); 

后,我运行此代码,窗口崩溃,和我:

:X Error: BadAccess (attempt to access private resource denied) 10 

我使用的是qt4的ubuntu10.04,任何人都有QWidget :: create中的示例吗?

回答

0

这是我的做法,虽然还有问题。

#include <sys/select.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <strings.h> 
#include <unistd.h> 
#include <regex.h> 

#include <X11/Xlib.h> 
#include <X11/Xresource.h> 
#include <X11/Xutil.h> 


#define SIZE_USEHINTS (1L << 0) 

Display *display = 0; 

void initDisplay() 
{ 
    if (display == 0) 
     display = XOpenDisplay(getenv("DISPLAY")); 
} 

int _is_success(const char *funcname, int code) { 
    if (code != 0) 
    fprintf(stderr, "%s failed (code=%d)\n", funcname, code); 
    return code; 
} 

int window_change(Window wid, int x, int y, int w, int h) { 
    initDisplay(); 
    XWindowChanges wc; 
    wc.x = x; 
    wc.y = y; 
    wc.width = w; 
    wc.height = h; 
    int ret = XConfigureWindow(display, wid, CWX | CWY | CWWidth | CWHeight, &wc); 
    XFlush(display); 
    return _is_success("XConfigureWindow", ret == 0); 
}