【问题标题】:Multi Screen/Window QT QML C++ application多屏幕/窗口 QT QML C++ 应用程序
【发布时间】:2020-05-21 10:43:13
【问题描述】:

我是 QT Quick 和 QML 的新手,我正在尝试使用 C++ 和 QT 构建 Linux 桌面多窗口应用程序。我的意思是具有多个窗口的应用程序,例如:

  • 斜线或欢迎屏幕
  • 主仪表板
  • 用户个人资料
  • 图表和图形
  • 等。等

我希望将这些屏幕作为独立的 C++ 类和 QML 文件,例如:

  • 仪表板.cpp
  • 仪表板.qml

我能够构建代表这些屏幕的 QML 文件,但不确定如何将它们映射到将控制 QML 和后端并与之通信的类。我想让每个 QML 文件都表示为 C++ 类。屏幕堆栈管理器将使用这些类从屏幕堆栈中推送和弹出屏幕。

我看过 QT 提供的示例,但大多数示例都是单屏的,并没有解释如何拥有多个屏幕以及如何维护屏幕堆栈。

【问题讨论】:

    标签: c++ qt qml qt-quick


    【解决方案1】:

    使用 Quick Controls 2 StackView 控件:

    https://doc.qt.io/qt-5/qml-qtquick-controls2-stackview.html

    此控件维护一堆 QML 视图,其中顶部的视图始终可见,您可以使用动画弹出和推送视图。

    【讨论】:

    • 感谢您的回复,这真的很有帮助。我将使用 StackView 来构建应用程序。但是我们是否可以从 C++ 代码访问 StackView 以推送和弹出 QML 屏幕,示例链接将有所帮助。当我们弹出屏幕时屏幕也会被破坏吗?
    • 您可以像任何其他 QML 对象一样从 C++ 访问它,方法是将对它的引用从 QML 端传递到 C++ 端。回复:内存管理,这取决于您是否推送已创建的对象或对 Component/QML 文件的引用。该链接到文档讨论所有权和内存管理问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多