我在做游戏,这是用qml和pyqt编写的,但是应该分成两个窗口(启动器+游戏)。在这两个qml文件之间切换的正确方法是什么?我不想使用QmlLoader,因为它不调整窗口大小,它需要很多信号!我也在尝试这个变体:
view.engine().clearComponentCache()
view.setSource(source())
但没用(qml窗口停止工作。。。-典型的windows错误,但是pycharm控制台中没有写入错误)
我的代码如下:
^{pr2}$正如你可能看到的,我的结构有点混乱,因为我是第一次做这种转换行为,所以我真的不知道,应该怎么做才对。。。欢迎所有建议!:)
我以前也面临同样的问题。相反,我反复使用相同的
在任何事情之前,请原谅我,但是功能代码是用C++编写的,但是我认为这个概念是可以理解的。我做了这个过程的一个简短版本,我希望它可以移植到python上。在QQuickView
加载相同的组件,我在QML中创建了一个组件作为内容容器,并将所需组件作为其子组件加载。每次设置新组件时,我们都会销毁当前组件并再次将新组件设置为子组件。在为了加载ContentFrame组件,我使用了一个从QQuickView(ViewManager)派生的类,它有一个名为setView的方法。此方法加载一个组件(在您的例子中是启动器或游戏),将其设置为
^{pr2}$contentContainer
的子组件,并将其anchor.fill
设置为填充整个父组件。在有更多的代码,但是ViewManager的核心是这个方法。我不在这里调用
QQmlEngine::clearComponentCache()
,因为我多次加载相同的组件,但在您的情况下,这可能是个好主意。在相关问题 更多 >
编程相关推荐