[英]finding out what portion of a QGraphicsItem is visible in a QGraphicsView
[英]How to get current visible portion of QGraphicsView in Qt?
我有 QGraphicsView,它有多个 QGraphicsItem。 在此视图中,我正在使用放大、缩小、适合等功能应用一些转换。
因此, fit-in
功能之前,我想将视图的当前转换(视图的当前情况)存储在一个变量中。 然后我想应用Fit-in
功能。 (这样,在 Undo-Redo 中我可以使用那个存储的位置)
但我不知道如何将视图的当前 position 存储在变量中。 我试过这种方式:
void myClass::FitIn()
{
QTransform t = _view->transform();
QScrollBar* hrSBar = _view->horizontalScrollBar();
QScrollBar* verSBar = _view->verticalScrollBar();
myCommand* c = new myCommand(t,hrSBar,verSBar);
undoStack->push(c);
_view->resetTransform();
}
如何在另一个变量中存储当前视图?
***** 编辑 ******
myCommand.cpp
myCommand::myCommand(QTransform t, QScrollBar *hr, QScrollBar *vr)
{
this->trans = t;
this->horizontalSBar = hr;
this->verticalSBar = vr;
}
void myCommand::undo()
{
_mView->setTransform(trans);
_mView->horizontalScrollBar()->setValue(horizontalSBar->maximum());
_mView->verticalScrollBar()->setValue(verticalSBar->maximum());
}
void myCommand::redo()
{
_mView->setTransform(trans); // Segmentation Fault occurs
_mView->horizontalScrollBar()->setValue(horizontalSBar->maximum());
_mView->verticalScrollBar()->setValue(verticalSBar->maximum());
}
我的命令.h
class myCommand: public QUndoCommand
{
public:
myCommand(QTransform t, QScrollBar* hr, QScrollBar* vr);
private:
QGraphicsScene* _mScene;
QGraphicsView* _mView;
}
正如mapToScene
的源代码所揭示的,三个参数定义了在视口上可见的场景部分:
QGraphicsView::transform()
QAbstractScrollArea::horizontalScrollBar()->value()
QAbstractScrollArea::verticalScrollBar()->value()
要实现撤消-重做框架,这三个参数应该在每次操作之前存储,并在撤消时恢复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.