【问题标题】:QML newbie needing some help in hooking up C++ backend with QML frontendQML 新手在连接 C++ 后端和 QML 前端时需要一些帮助
【发布时间】:2012-02-03 21:58:28
【问题描述】:

我有用于从 XML 文件保存和检索数据的 C++ 代码。我有一些在 QML 中构建的表单,我想以这样的方式连接,当数据输入到我的 QML 中时,处理是在 C++ 中处理的,并且通过 QML 表单对产品进行搜索,在 C++ 中处理和产品列表项目被交还给 QML 进行显示。

class ProcessRequests : public QObject
{
    Q_OBJECT
    Q_PROPERTY(string username READ username WRITE username)
    Q_PROPERTY(string useremail READ useremail WRITE useremail)
    Q_PROPERTY(string usercomplaint READ usercomplaint WRITE usercomplaint)


    public:

    ProcessRequests()
    {}
    ~ProcessRequests(){}

    Q_INVOKABLE void SubmitComplaint(){
     //TODO: Add Xml code to save the property values to file 

    }

};

【问题讨论】:

    标签: c++ qt qml qt-quick


    【解决方案1】:

    我认为你的问题是 QML 和 C++ 代码之间的相互通信,你可以用这样的代码来做:

    //Product.cpp
    QmlApplicationViewer viewer;
    
    QDeclarativeEngine *engine = viewer.engine();
    QDeclarativeContext *context = engine->rootContext();
    
    context->setContextProperty("Product", this);
    
    //Your QML File
    Product.YourFunction(args);
    

    【讨论】:

    • 我应用了上述内容,但似乎我可能还遗漏了一些其他内容。比如我如何从我的 QML 文件中实际调用它?
    • 这是您应该在 QML 文件中执行的操作的示例: Rectangle { id: button width: 100; height: 100 MouseArea { anchors.fill: parent //这是将调用你的 C++ 代码的事件 onClicked: { //你给上下文对象的属性的名称 //和你想要的公共函数的名称调用 Product.DoSomething("你好!"); } } }
    【解决方案2】:

    这个话题比较大,你最好看看文档,他们很清楚,应该还有一些教程。这是一个很好的起点:QML bindings in C++

    【讨论】:

    • 我已经看了几次,但仍然没有太多关于它是如何完成的,或者我需要对我的当前数据做多少调整。
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2017-09-27
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多