2

残念ながら、これに関する文書化された情報はありません。QLayoutウィジェット内のウィジェットではなく、QGraphicsItem内部QGraphicsItemの s のようなレイアウト クラスが必要です。私は持っている:

class AnotherGraphicsItem : public QGraphicsItem {
public:
    QRectF boundingRect();

    void paint(QPainter *painter, ...) {
        painter->drawRect(0, 0, 30, 30);
        // ...
    }
};

class GraphicsItem : public QGraphicsItem {
public:
    QRectF boundingRect();

    void paint(...) {
        for (size_t i = 0; i < 4; ++i) {
            AnotherGraphicsItem *aItem = new AnotherGraphicsItem();
            aItem->setPos(i * 20, 0);
            aItem->setParent(this);
        }
    }
};

class GraphicsView : public QGraphicsView {
public:
    GraphicsView(){ setScene(new QGraphicsScene(this)); populate(); }
    void populate() {
        QGraphicsItem *item = new GraphicsItem();
        scene()->addItem(item);
    }
};

簡単に言えば、私のGraphicsViewオブジェクトには、別の QGraphicsItem オブジェクト内に QGraphicsItem オブジェクトがあるシーンがあります

QGraphicsView -> QGraphicsScene -> QGraphicsItem (GraphicsItem) -> 4x QGraphicsItem (AnotherGraphicsItem)

問題はAnotherGraphicsItem、外側のGraphicsItemオブジェクトで何らかの方法で整列する必要があることです。私は使用しましたが、使用するつもりのないQGraphicsLayout内部で使用する必要があるか、 (メソッドがある)でのみ機能するようです。QGraphicsWidgetQGraphicsViewsetLayout()

いくつかの良い例も歓迎します。

4

0 に答える 0