QGraphics手动调整窗口大小后场景宽度/高度没有变化
QGraphicsScene width/height is not changing after the window was resized manually
>我有一个由图形视图和图形场景组成的应用程序。基本的GUI结构是这样的(在Qt Creator中完成(:
QMainWindow
QWidget (centralWidget)
QGridLayout
QVBoxLayout
QGraphicsView
这是我的主窗口构造函数的代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
{
ui->setupUi(this);
scene = new Scene(this);
ui->graphicsView->setScene(scene);
scene->setSceneRect(-100,-100,200,200);
}
现在,当我手动调整应用程序窗口的大小时,场景/图形视图在视觉上也会调整大小。它在所有可见区域中也处于活动状态,我可以捕获鼠标事件,在那里添加项目,尽管它超出了setSceneRect()
设置的区域。但是当我调用scene->width()
或scene->height()
时,它一直返回 200。如何获取场景可见部分的大小,而不是setSceneRect()
中设置的大小?场景的可见部分是指可视化我的物品的白色可见区域/矩形,如果物品超出该区域,则不可见。
通常根本不
需要使用设置场景矩形,除非场景包含非常多的项目。当您可以比itemsBoundingRect()
更快地计算场景内容的边界矩形时,或者如果您知道场景的固定最大大小 - 例如,如果场景代表一些固定大小的画布,则设置它是一种优化。否则,您别无选择,只能不设置。
无论如何,将场景矩形绑定到视口是不正确的。场景矩形由空间索引使用,并且必须表示场景的内容,与任何视口无关。 回想一下,场景本身就是一个可用的模型 - 它可以附加 0 个或多个视口。将任何特定视口强绑定到场景的任何参数都是设计错误。
相关文章:
- 警告处理为错误这里有什么问题
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 2D数组来自文本输入,中间有空格
- 函数向量_指针有不同的原型,我可以构建一个吗
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么尽管源代码没有变化,但每个系统的片段数量却有很大差异?
- QGraphics手动调整窗口大小后场景宽度/高度没有变化
- 有可能在C++中的值发生变化时触发计算吗
- §12.3.2 [class.conv.fct]/1 in C++1z 相对于 C++14 发生了重大变化。有意义吗?
- 有没有任何方法可以确定rgb值数组的宽度和高度
- VS 2012 中可能有什么变化来破坏我的C++应用程序?
- 地形高度贴图 - C++/顶点着色器具有不同的值
- Qt - 当值发生变化时,QSpinBox 上每个失去焦点的信号是否有信号
- 一个从未执行过的代码中的一个小变化怎么会有什么不同呢
- boost geometry + WGS84,有经纬度,但没有高度
- 在一棵有191个节点且高度为9的二叉树中找到一个键所需的最大比较次数是多少?
- Array2的变化对Array(表)有影响
- 加速度计"高度变化"代码 PIC
- 自2002年以来,c++模板标准有什么重大变化吗?
- c++ STL标准是否有变化?