Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 集成c++;和qml_C++_Qt_Qml - Fatal编程技术网

C++ 集成c++;和qml

C++ 集成c++;和qml,c++,qt,qml,C++,Qt,Qml,好的,我重新设置了这篇文章,因为我想我没有足够的“最小、完整和可验证的示例”,这是我的全部问题,因为我太迷恋插槽和信号了。。这里是第二次尝试,我将省略flower.cpp,但是我知道它在那里有一个函数 #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQuickView> #include <QtQuick> #include <QNetworkAcc

好的,我重新设置了这篇文章,因为我想我没有足够的“最小、完整和可验证的示例”,这是我的全部问题,因为我太迷恋插槽和信号了。。这里是第二次尝试,我将省略flower.cpp,但是我知道它在那里有一个函数

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickView>
#include <QtQuick>
#include <QNetworkAccessManager>
#include <iostream>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QNetworkReply>
#include <QObject>
#include "flower.h"



void Flower::onClicked(){
//code i've been trying to test all day
}
当我现在尝试运行时,收到以下错误“W libAHDP.so:QObject::connect:cannotconnect(null)::qmlClick()to(null)::Flower.onClicked()”


很抱歉,我的第一篇文章非常误导和混乱,我希望这篇文章能更清楚地说明我的问题是什么

只有QoObject可以有插槽,所以Flower必须继承QoObject。另一方面,您使用的方法总是带来问题,即试图从C++获得QML元素,而必须使用C++代码>使用SqtCutExtExpices()/<代码>:< /P>将C++元素导出到QML。 flower.h

#ifndef FLOWER_H
#define FLOWER_H

#include <QObject>

class Flower : public QObject
{
    Q_OBJECT
public:
    explicit Flower(QObject *parent = nullptr);
    Q_SLOT void onClicked();
};

#endif // FLOWER_H

有关更多信息,我建议阅读

只有QoObject可以有插槽,因此Flower必须从QoObject继承。另一方面,您使用的方法总是带来问题,即试图从C++获得QML元素,而必须使用C++代码>使用SqtCutExtExpices()/<代码>:< /P>将C++元素导出到QML。 flower.h

#ifndef FLOWER_H
#define FLOWER_H

#include <QObject>

class Flower : public QObject
{
    Q_OBJECT
public:
    explicit Flower(QObject *parent = nullptr);
    Q_SLOT void onClicked();
};

#endif // FLOWER_H

要了解更多信息,我建议阅读

请提供a-现在你的问题中有太多与实际问题无关的代码,这使得任何人都很难提供帮助。请提供a-现在你的问题中有太多与实际问题无关的代码,让任何人都更难帮助。嘿,谢谢你的回复,我非常感谢!我已经实施了您的修复,现在收到此错误“未定义对“vtable for Flower”的引用”@DevinB删除构建和编译文件夹returned您的真棒非常感谢您帮助我完成此@eyllanesc我做了一次清理,并且能够运行我的应用程序。我仍然在获取和错误地引用我的onclick“W libAHDP.so:qrc:/main.qml:258:TypeError:Property'onClicked'的对象QQuickItem(0xd74786a0)不是一个函数“我在onClicked:flower.onClicked()中有一个小写的f,两种方式我都会收到错误”W libAHDP.so:qrc:/main.qml:257:TypeError:Property'onClicked'的对象[对象对象对象对象]不是功能“嘿,谢谢你的回复,我非常感谢!我已经实施了您的修复,现在收到此错误“未定义对“vtable for Flower”的引用”@DevinB删除构建和编译文件夹returned您的真棒非常感谢您帮助我完成此@eyllanesc我做了一次清理,并且能够运行我的应用程序。我仍然在获取和错误地引用我的onclick“W libAHDP.so:qrc:/main.qml:258:TypeError:Property'onClicked'的对象QQuickItem(0xd74786a0)不是一个函数“我在onClicked:flower.onClicked()中有一个小写的f,两种方式我都会收到错误”W libAHDP.so:qrc:/main.qml:257:TypeError:Property'onClicked'的对象[对象对象对象对象]“不是一个函数”
Rectangle {
    signal qmlClick();

    id: navMenu
    color: "#00000000"
    radius: 0
    anchors.fill: parent
    z: 3
    visible: false
    border.width: 0
    transformOrigin: Item.Center
               MouseArea {
                id: buttFArea
                objectName: buttFObject
                anchors.fill: parent
                onClicked: navMenu.qmlClick()
            }
           }
#ifndef FLOWER_H
#define FLOWER_H

#include <QObject>

class Flower : public QObject
{
    Q_OBJECT
public:
    explicit Flower(QObject *parent = nullptr);
    Q_SLOT void onClicked();
};

#endif // FLOWER_H
#include "flower.h"
#include <QDebug>

Flower::Flower(QObject *parent) : QObject(parent)
{}
void Flower::onClicked()
{
    qDebug()<< __PRETTY_FUNCTION__;
}
#include <QGuiApplication>
#include <QQuickView>
#include <QQmlContext>
#include "flower.h"

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    Flower flower;
    QQuickView view;
    view.rootContext()->setContextProperty("flower", &flower);
    view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
    view.show();
    return app.exec();
}
import QtQuick 2.9

Rectangle {
    color: "#00000000"
    anchors.fill: parent
    transformOrigin: Item.Center
    MouseArea {
        id: buttFArea
        anchors.fill: parent
        onClicked: flower.onClicked()
    }
}