Linux下如何实现在文档光标处输出字符串。

想实现一个类似于输入法那种,将一串中文字符输出到文档光标处。


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    Display *display = XOpenDisplay(0);
    if(display == NULL)
        return -1;
    Window winFocus;
    int revert;
    XGetInputFocus(display,&winFocus,&revert);
    char *name = NULL;
    XFetchName(display,winFocus,&name);
    std::cout<<name<<"h"<<std::endl;
    XGCValues xgcv;
    xgcv.foreground = BlackPixel(display,DefaultScreen(display));
    xgcv.background = WhitePixel(display,DefaultScreen(display));
    unsigned long mask;
    mask = (GCForeground | GCBackground);
    GC g = XCreateGC(display, winFocus, mask, &xgcv);
    XWindowAttributes attrib;
    XGetWindowAttributes(display, winFocus, &attrib);
    std::cout<<"XGetWindowAttributes"<<std::endl;
    char *fontName = "zh_CN.utf8";
    std::cout << fontName << std::endl;
    char *nameT = "hello XDrawLine";
    int ReXDrawstring = XDrawString(display, winFocus, g, 800, 800, nameT, 30);
    printf("X=5d,Y=%d", (attrib.x, attrib.y));
    std::cout << ReXDrawstring << std::endl;
    std::cout << "XDrawString" << std::endl;
    XFlush(display);
    getchar();
    InputFocus
    XCloseDisplay(display);
    std::cout <<"XCloseDisplay"<<std::endl;

    return a.exec();
}

现在的结果是,输出的字符串像图片一样,展现在当前窗口,并没有输出在光标处,并且是那种可编辑的状况。

先获取当天光标位置,再插入