0

。H

#include <QObject>
#include <QDebug>

class MyClass : public QObject
{
  Q_OBJECT
public:
  Q_INVOKABLE void cppMethod (const QString &msg) 
  {
    qDebug() << "Called the C++ method with" << msg;
  }

public slots:
  void cppSlot (int number) 
  {
    qDebug() << "Called the C++ slot with" << number;
  }
};

.cpp

#include <QtCore/QCoreApplication>
#include <QDeclarativeEngine>
#include <QDeclarativeComponent>
#include <QDeclarativeContext>
#include <QDeclarativeView>
#include <QVariant>
#include <QMetaObject>

#include "cppFromQml.h"

int main (int argc, char *argv[]) 
{
  QCoreApplication a(argc, argv);
  QDeclarativeView view;

  return a.exec();
}

这会导致分段错误。出路是什么?

数量:4.8.1

4

1 回答 1

1

请注意,您没有使用 MyClass,并且 - 只是我的猜测 - 声明性视图将需要 QApplication 才能正确运行。

为了更好地理解,我创建了一个项目,几乎把所有东西都扔掉了(只保留了我添加的 .pro qt += declarative),并更改了一些代码,如下所示:

#include <QApplication>
#include <QDeclarativeEngine>
#include <QDeclarativeComponent>
#include <QDeclarativeContext>
#include <QDeclarativeView>
#include <QVariant>
#include <QMetaObject>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDeclarativeView view;
    view.show();
    return a.exec();
}

现在它运行并显示一个空视图,正如预期的那样......

于 2013-10-02T12:34:16.587 回答