Qt Widgets: QGraphicsRectItemで矩形アイテムを操作するサンプルコード集


Qt Widgetsライブラリ内のQGraphicsRectItemクラスは、2Dグラフィックスシーンに矩形を描画するための基本的なアイテムです。このクラスには、矩形の形状、外観、および動作を制御するためのさまざまなプロパティとメソッドが用意されています。

その中でも、QGraphicsRectItem::anonymousは、QGraphicsRectItemクラスが持つ列挙型の一つであり、type()仮想関数の戻り値として使用されます。この列挙型は、アイテムの種類を表す整数值を定義しており、QGraphicsRectItemクラスの場合は3という値が割り当てられています。

詳細

QGraphicsRectItem::anonymous列挙型の値は、以下の通りです。

  • 3: 矩形アイテムを表します。

この列挙型は、主に内部的な処理で使用され、開発者が直接操作する必要はありません。しかし、QGraphicsItemクラスの継承クラスを開発する場合は、この列挙型の値を理解することが役立つ場合があります。

QGraphicsRectItemクラスは、矩形以外にも、楕円形、多角形、テキストなどの様々な形状を描画するための派生クラスが存在します。これらの派生クラスも、それぞれ独自の列挙型を持つ場合があります。

以下のコード例は、QGraphicsSceneにQGraphicsRectItemを追加し、その矩形を赤色で塗りつぶす例です。

#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // シーンを作成
  QGraphicsScene scene;

  // 矩形アイテムを作成
  QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 100, 50);

  // 矩形を赤色で塗りつぶす
  rectItem->setBrush(Qt::red);

  // シーンに矩形アイテムを追加
  scene.addItem(rectItem);

  // ビューを作成
  QGraphicsView view(&scene);
  view.show();

  return app.exec();
}


#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // シーンを作成
  QGraphicsScene scene;

  // 矩形アイテムを作成
  QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 100, 50);

  // シーンに矩形アイテムを追加
  scene.addItem(rectItem);

  // ビューを作成
  QGraphicsView view(&scene);
  view.show();

  return app.exec();
}

例2: QGraphicsRectItem の色を設定する

#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // シーンを作成
  QGraphicsScene scene;

  // 矩形アイテムを作成
  QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 100, 50);

  // 矩形を赤色で塗りつぶす
  rectItem->setBrush(Qt::red);

  // シーンに矩形アイテムを追加
  scene.addItem(rectItem);

  // ビューを作成
  QGraphicsView view(&scene);
  view.show();

  return app.exec();
}
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // シーンを作成
  QGraphicsScene scene;

  // 矩形アイテムを作成
  QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 100, 50);

  // 矩形に黒い境界線を設定
  rectItem->setPen(QPen(Qt::black));

  // シーンに矩形アイテムを追加
  scene.addItem(rectItem);

  // ビューを作成
  QGraphicsView view(&scene);
  view.show();

  return app.exec();
}


しかし、QGraphicsRectItemクラスの**type()**仮想関数を直接呼び出すことで、アイテムの種類を取得することは可能です。この関数は、アイテムの種類を示す整数値を返します。QGraphicsRectItemクラスの場合は、3という値が返されます。

int type() const override {
    return QGraphicsItem::Type::RectItem;
}

以下のコード例は、QGraphicsSceneにQGraphicsRectItemを追加し、そのアイテムの種類をコンソールに出力する例です。

#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // シーンを作成
  QGraphicsScene scene;

  // 矩形アイテムを作成
  QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 100, 50);

  // シーンに矩形アイテムを追加
  scene.addItem(rectItem);

  // ビューを作成
  QGraphicsView view(&scene);
  view.show();

  // アイテムの種類をコンソールに出力
  qDebug() << rectItem->type();

  return app.exec();
}

このコードを実行すると、以下の出力がコンソールに出力されます。

RectItem

このように、**type()**仮想関数を直接呼び出すことで、QGraphicsRectItem::anonymous を使用せずにアイテムの種類を取得することができます。