いくつかのグラフィック アイテムを含むシーンを含むグラフィック ビューがあります。これらのグラフィック アイテムをシーンの中央ではなく左側に表示するにはどうすればよいですか?
私は多くのアイデアを見てきましたが、運がありません。
いくつかのグラフィック アイテムを含むシーンを含むグラフィック ビューがあります。これらのグラフィック アイテムをシーンの中央ではなく左側に表示するにはどうすればよいですか?
私は多くのアイデアを見てきましたが、運がありません。
QGraphicsRectItem
最も簡単な方法は、最初の項目として非表示を追加することです。
次に、その最初のアイテムの子として他のアイテムを追加します。
1枚目の中心がコーディネートの中心。
QGraphicsScene *scene = new QGraphicsScene(widget.graphicsView);
// ....
QGraphicsRectItem *frame = scene->addRect(-100,-100,100,100);
frame->setPen(Qt::NoPen);
// ....
// Add new items as children of frame
// Align them relative to their parent
^
|
|
-100,100 | 100,100
+-----------------------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
---------------------------+------------------------>
| | |
| | |
| | |
| | |
| | |
| | |
| | |
+-----------------------------+
-100,100 | 100,-100
|
ウィンドウ サイズを認識するようにするには、次のメソッドをオーバーライドします。
class MainForm : public QMainWindow
{
//...
QGraphicsScene *scene; // Move it here
QGraphicsRectItem *frame; // Move it here
protected:
virtual void resizeEvent(QResizeEvent * event);
virtual bool event(QEvent * event);
virtual void resizeAction();
//...
};
void MainForm::resizeAction()
{
QRectF rect(field->rect());
widget.graphicsView->setSceneRect(rect);
widget.graphicsView->fitInView(rect, Qt::KeepAspectRatio);
}
void MainForm::resizeEvent(QResizeEvent * event)
{
resizeAction();
QMainWindow::resizeEvent(event);
}
bool MainForm::event(QEvent * event)
{
if (event->type() == QEvent::Show)
resizeAction();
return QMainWindow::event(event);
}
Scene_item.setSceneRect(x0,y0,x1,y1);