想实现一个类似于输入法那种,将一串中文字符输出到文档光标处。
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();
}
现在的结果是,输出的字符串像图片一样,展现在当前窗口,并没有输出在光标处,并且是那种可编辑的状况。
先获取当天光标位置,再插入