4

マウスカーソルの動きを画面の左半分に固定しようとしています。次の画面設定があります。

左側はサイズ 1120x1080 の Qt ウィンドウで、右側はサイズ 800x1080 の GL ウィンドウです。

Ubuntu 12.10 で Openbox ウィンドウ マネージャーを使用しています。ウィンドウのレイアウトは固定されたままです。

マウスの動きを Qt ウィンドウに制限する必要があります。

4

2 に答える 2

0

この巻き込み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);
}
于 2015-04-24T08:05:45.797 に答える