这是以Qt应用程序的父窗口id为参数的函数
void getImage(Window win){
   d=XOpenDisplay(NULL);
     s=DefaultScreen(d);
     w=XCreateSimpleWindow(d, RootWindow(d, s), 1000, 1000, 100, 100, 14,BlackPixel(d,s),WhitePixel(d, s));
     XMapWindow(d, w);
     XReparentWindow(display, w,win, 50, 50);
     XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 60, 60);
}这是一个调用getImage(Window win)函数的Qt应用程序。
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    getImage(w.winId());
    return a.exec();
}我试图从x11应用程序中获取图像并将其显示在Qt窗口中,但程序在XFillRectangle()处崩溃,并且当我注释掉Qt应用程序中的getImage(Window win)函数时工作正常。基本上我想在Qt窗口上做图像注释,但注释覆盖框架必须来自x11运行的应用程序。
发布于 2020-04-04 15:17:38
当你调用w.show()时,你只是要求窗口显示,但是Qt会等待事件循环执行来显示它。您有两种方法可以尝试:
w.show()
QApplication::processEvents():子类QMainWindow,在覆盖函数中调用getImage:showEvent(QShowEvent* showEvent) override;
https://stackoverflow.com/questions/61018516
复制相似问题