qt - 如何在点击时加载 QML 组件

标签 qt qml qtquick2 loader

我将尝试用一个简单的例子来解释我的问题。

我有一个 Rectangle A 和一个 Rectangle B。我希望当您单击 A 时,view(例如 listView)会加载到 B 中。如果您再次单击 AlistView 将消失。 我知道它与 class Loader 有关,但我无法使其正常工作。

Rectangle {
    id: A
    MouseArea {
         anchors.fill: parent
         onClicked {
            //Load or Close listView
         }
    }
 }
 Rectangle {
     id:B
     //here load or unload the listView
 }

谁能提供一个简单的例子?

注意:我不想使用 visible,因为我需要在单击矩形时刷新 data

最佳答案

这是一个简单的例子:

Rectangle {
    id: A
    MouseArea {
        anchors.fill: parent
        onClicked {
            ld.active = !ld.active
        }
   }
}

Rectangle {
    id:B

    Loader {
        id: ld

        sourceComponent: comp
        active: false
        anchors.fill: parent
    }

    Component {
         id: comp

         Rectangle { //replace this with your listview
              color: blue
         }
    }
}

当您点击矩形 A 时,加载程序的状态发生变化,组件 comp 加载/卸载。

关于qt - 如何在点击时加载 QML 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43470596/

相关文章:

c++ - Qt C++ 如何在类中使用 QWidget 的 keyPressEvent

c++ - 您可以拥有与要继承的基类相同的类的私有(private)成员吗?

qt - 如何以编程方式创建选项卡的项目?

qt - 如何将 JavaScript 文件注入(inject) WebEngineView 页面?

具有大量 Windows 或复杂 UI 的 Qt 5 QML 应用程序

c++ - Qt 静态构建在虚拟机(win7 32 位)上需要很长时间

c++ - 如何使用Qt从系统剪贴板内容粘贴到任意窗口

c++ - QMetaObject::invokeMethod 无法调用 QML/JS 函数

python - 使用 PySide2 在 QML 中注册类型

javascript - 如何在不使用 QML 函数的情况下根据 QQuickItem 的当前值转换其 x 或 y 属性