Qt5 Linux - 在两个屏幕上拦截最大化和跨越应用程序?

时间:2016-06-30 14:57:00

标签: qt xcb

我有一个奇怪的要求让Qt应用程序在双显示器设置的两个屏幕上最大化。我知道我需要做一些特殊的魔术来实现这一点,因为它不是标准行为。

我有一个专门的QAbstractNativeEventFilter,并且在其nativeEventFilter()函数内部我抓住了xcb_generic_event_t。我对xcb没什么经验,所以我不确定从那里去哪里。

我假设如果response_type == XCB_PROPERTY_NOTIFY,那么我将需要以某种方式获得与_NET_WM_STATE_MAXIMIZED_HORZ相匹配的原子并从那里开始工作。

但是我不确切知道如何通过Qt或Xcb这样做。到目前为止,我有:

bool my_nef::nativeEventFilter( const QByteArray& event_type, void* message, long* )
{
 xcb_atom_t* a = xcb_get_property_value
  if ( event_type.toStdString() == "xcb_generic_event_t" ) {
    xcb_generic_event_t* ev = static_cast<xcb_generic_event_t*>(message);
    if ( ev->response_type == XCB_PROPERTY_NOTIFY ) {
      xcb_property_notify_event_t* ne = (xcb_property_notify_event_t*)ev;
    }
  }  

  return false;

}

我确实得到了XCB_PROPERTY_NOTIFY。我只是不知道如何处理它以检查水平最大化。

以前有人这样做过吗?

0 个答案:

没有答案