マウスカーソルの動きを画面の左半分に固定しようとしています。次の画面設定があります。
左側はサイズ 1120x1080 の Qt ウィンドウで、右側はサイズ 800x1080 の GL ウィンドウです。
Ubuntu 12.10 で Openbox ウィンドウ マネージャーを使用しています。ウィンドウのレイアウトは固定されたままです。
マウスの動きを Qt ウィンドウに制限する必要があります。
この巻き込みQGraphicsItem::itemChange()
。特定のエリアに制限したいアイテムがある場合は、itemChange()
そのアイテムを再実装し、変更を監視してQGraphicsItem::ItemPositionHasChanged
、アイテムが関心のあるエリアの外に配置されるかどうかを確認し、そのエリア内から位置を返すことでそれを防ぎます。例えば:
QVariant QGraphicsItem::itemChange(GraphicsItemChange change, const QVariant &value)
{
switch (change) {
case ItemPositionHasChanged:
if(x() < -200 || y() < -200 || x() > 200 || y() > 200)
setPos(0, 0);
graph->itemMoved();
break;
default:
break;
};
return QGraphicsItem::itemChange(change, value);
}