- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在尝试将我的场景内容(拉伸(stretch))放入我的 QDeclarativeView 时遇到问题。我以常用方式加载 QML 文件。我用下面的代码覆盖了 showEvent 和 resizeEvent 方法:
QGraphicsItem* rootItem = this->scene()->items.at(0);
QRectF rootRect = rootItem->sceneBoundingRect(); // it gives me a QRectF(0,0,1920,1080)
this->fitInView(rootRect, Qt::IgnoreAspectRatio); // Aspect doesn't matters.
问题是它一直在内容周围显示一个白色的小边框(大约 4 个像素)。我已经在 1920x1080、1920x1200 和 1440x900 下进行了测试,我桌面上的所有这些分辨率显示的内容都存在同样的问题。即使在全屏模式下,它也会保留白色小边框。
只是为了确保它与内容无关,我已将 View 的背景画笔设置为黑色并且白色边框变为黑色(换句话说,内容被缩小得太多以致无法显示在 View 中)。
一旦根据内容大小改变背景部分,从矩形硬编码中减去值就不是一个选项。 (它应该动态适应)。
有什么建议吗?
最佳答案
也是刚遇到的问题。由于该错误尚未解决,因此我将发布我的部分解决方案。我将 QGraphicsView 子类化并添加了一个方法 myFitInView(),它会自动执行所需的缩放和居中。
我想如果您需要更多性能,您也可以直接填充矩阵,但我不需要这个,因此单独缩放和居中。
此外,此方法会丢失任何先前的 View 转换,但您也可以通过获取当前矩阵并相应地修改/相乘来解决这一问题。
void MyGraphicsView::myFitInView(QRectF const &rect)
{
QRectF viewRect = frameRect();
double scaleX = viewRect.width() / rect.width();
double scaleY = viewRect.height() / rect.height();
QTransform trans;
trans.scale(scaleX, scaleY);
setTransform(trans, false);
centerOn(rect.width() / 2, rect.height() / 2);
}
关于c++ - Qt 4.8.5 QGraphicsView::fitInView 无法完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18387276/
我在 Qt 上创建了一个图像编辑器,但在 graphicsView 上显示图像时遇到问题。 当我打开图像时,我调用 fitInView 以便它很好地适合 graphicsView 而问题就在这里:当我
为什么 QGraphicsView.fitInView() 仅在我调整窗口大小后才起作用? 我在 MS Windows 10 上使用 Python 2.7.7 和 Qt 4.8.7。下面是演示该问题的
为什么 QGraphicsView.fitInView() 仅在我调整窗口大小后才起作用? 我在 MS Windows 10 上使用 Python 2.7.7 和 Qt 4.8.7。下面是演示该问题的
为什么这样: graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio); 没有按预期工作?它没有正确地适合场景,在它周围显示了
我有一个发生在静态 map 之上的游戏。我想在 QGraphicsView::drawBackground() 中绘制 map 。 一切似乎都在膨胀。除了除非我调整窗口大小,否则不会绘制任何内容...
我正在尝试制作一个宽度与高度相同的 QGraphicsView 位于窗口中心。 我在 Qt Designer 中创建了一个普通的 QGraphicsView 并设置了最小尺寸,添加了一些将 QGrap
我的 Qt 应用程序中有一个自定义 QGraphicsScene(我的类称为 MainScene)。这个场景包含一些 Rect 项目,它们被放置在网格中 见图一 另外,我可以动态改变这个矩形网格的大小
在尝试实现项目大小不变但项目之间的距离被放大的场景时,我遇到了以下代码的问题,该代码绘制了一个矩形和文本“A”。现在,如果我在矩形项目上设置标志 ItemIgnoresTransformations,
我在尝试将我的场景内容(拉伸(stretch))放入我的 QDeclarativeView 时遇到问题。我以常用方式加载 QML 文件。我用下面的代码覆盖了 showEvent 和 resizeEve
我是一名优秀的程序员,十分优秀!