我有一个奇怪的要求让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。我只是不知道如何处理它以检查水平最大化。
以前有人这样做过吗?