我正在Qt 4.8中为每个显示器使用带有QGraphicsViews的QGraphicsScene开发Linux(RHEL,Gnome,Compiz)应用程序。每个QGraphicsView都有Qt :: X11Bypasswindowmanagerhint窗口提示。为了恢复键盘焦点,我有一个事件处理函数,它在每个事件的QGraphicsViews上调用activateWindow()(我意识到这可能是过度杀伤和非常低效的)。应用程序是用户可能要求经常隐藏和显示的应用程序;当我在事件处理程序中激活的特定QGraphicsView上调用show()时,会发生X11错误事件。特别是,该错误的错误代码为8,对应于BadMatch错误,并且主要操作代码为42,我相信它对应于XSetInputFocus()。使用QGraphicsScene和Qt :: X11Bypasswindowmanagerhint在X11中产生BadMatch错误
首先,这是一个错误,可以简单地通过自定义x11事件处理程序忽略(因为应用程序实际上工作)? 其次,有没有更好的方式来调用activateWindow时使用QGraphicsView这个特定的窗口提示?如果没有,是否至少有一种方法可以避免这个错误?