gpt4 book ai didi

c++ - Qt 和 OSG 集成问题,场景图消失

转载 作者:太空狗 更新时间:2023-10-29 21:05:12 26 4
gpt4 key购买 nike

所以我在集成QT和OSG时遇到了问题。我有一个运行良好的 QT/OSG 程序。布局与您在下面看到的类似。

|--------------------------|
| 1 | 2 |
| | |
| | |
| | |
| | |
| | |
| |-------------------|
| | 3 |
| | |
|--------------------------|

中央小部件由一个 QFrame 组成,它具有三个子小部件并使用网格布局。小部件 1 是一个 QFrame,也具有网格布局。小部件 2 是 OSG 查看器,如下所述。小部件 3 是一个 QFrame,也具有网格布局。

两个是用在 osgviewerQT.cpp 中的示例建模的小部件填充的。基本上它使用一个嵌入式窗口,我有一个每 10 毫秒触发一次并调用 osg 框架函数的 QTimer。

我还有 4 个其他小部件。我动态填充的两个 QLabel 和两个 QTable。我一直在将所有这四个小部件添加到 1 的网格布局中。当我这样做时,一切都很好,我在 2 中得到了我漂亮的场景图。如果我做了一个改变,将这四个小部件从 1 移动到 2 的网格布局,我的场景图突然消失了。任何想法出了什么问题?我已经检查过 valgrind,所以我很确定这不是内存问题,而是我如何使用 lib。我已确认正在调用框架函数。

最佳答案

我找到了一个解决方案:您必须为查看器控件添加一个大小提示。这样的事情就可以了:

AbstractQTGLWidget.hpp中:

...
class AbstractQTGLWidget ... {
...
protected:
QSize sizeHint() const { return QSize(400,300); }
...
};

我认为(但不是 100% 确定)当使用 width()height() 属性时,问题出在构造函数中。

不同的布局,在建立每个小部件的宽度和高度时具有不同的优先级,因此构造函数对最终的宽度和高度无视

给出初始宽度和高度,我假设底层 osg 查看器可以计算相机和对象引用,并相应地开始处理。正确应用后来的宽度和高度更改,因为对象以正确的大小启动,但不是最终的。

也许控件认为它的大小为 0 x 0 像素,并且渲染器开始疯狂初始化...

0: with 0

1: With 1

关于c++ - Qt 和 OSG 集成问题,场景图消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com