【发布时间】:2018-11-04 04:56:05
【问题描述】:
我已经用这个把头发拉了好几个小时了。有一个关于它的线程here,但似乎没有任何效果。 QGraphicsView::rect() 将返回宽度和高度,但 left 和 top 值设置不正确(始终为 0 - 忽略滚动量)。我希望它在场景坐标中,但它应该很容易从任何系统转换。我不知道 horizontalScrollBar()->value() 和 vert 正在返回什么......似乎是毫无意义的胡言乱语。
// 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() 因为那些是浮动......但类似的东西。
-
可能是你如何构造 QGraphicsView,有源代码 sn-p 吗?
-
我不确定您到底想要什么代码。我如何构造它并不重要......得到可见的矩形应该完全相同。
标签: c++ qt qgraphicsview