QWidget 在 x11 中创建问题

发布于 2024-09-13 12:07:27 字数 375 浏览 1 评论 0原文

我想使用 qt 来控制其他一些窗口,所以我编写了这段代码:

#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

我正在将 ubuntu10.04 与 qt4 一起使用,有人在 QWidget::create 中有示例吗?

I want use qt to control some other windows, so I write this code:

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

after I run this code, the window crashes, and I got:

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

I'm using ubuntu10.04 with qt4, anyone has sample in QWidget::create?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仲春光 2024-09-20 12:07:27

这是我的方法,但仍然有错误。

#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);
}

this is my approach, still has bug though.

#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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文