Я вытягиваю волосы с этим часами. Там есть нить here, но ничего не работает. QGraphicsView :: rect() вернет ширину и высоту, но значения left
и top
установлены неправильно (всегда 0 - игнорирование прокрученной суммы). Я хочу его в координатах сцены, но его нужно легко перевести из любой системы. Я понятия не имею, что horizontalScrollBar()->value()
и верст возвращаются ... кажется, бессмысленными смехами.Получите видимый прямоугольник QGraphicsView?
// created here
void EditorWindow::createScene() {
m_scene = new EditorScene(this);
m_view = new EditorView(m_scene);
setCentralWidget(m_view);
connect(m_scene, SIGNAL(mousePosChanged(QPointF)), this, SLOT(mousePosChanged(QPointF)));
}
/// with this constructor
EditorView::EditorView(QGraphicsScene* scene, QWidget* parent) : QGraphicsView(scene, parent) {
setRenderHint(QPainter::Antialiasing);
setCacheMode(QGraphicsView::CacheBackground);
setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
setDragMode(QGraphicsView::NoDrag);
scale(1.0, -1.0); // flip coordinate system so that y increases upwards
fitInView(-5, -5, 10, 10, Qt::KeepAspectRatio);
setInteractive(true);
setBackgroundBrush(QBrush(QColor(232,232,232), Qt::DiagCrossPattern));
}
Поцарапайте, что ... значения полосы прокрутки относительно ... ну, это не может быть sceneRect(), потому что это float ... но что-то подобное. – mpen
Возможно, как вы создаете QGraphicsView, любой фрагмент кода? – fabrizioM
Я не уверен, какой код вы хотите точно. На самом деле не имеет значения, как я его построю ... получение видимого прямоугольника должно быть точно таким же. – mpen