Доступ к функции C ++ из QMLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Доступ к функции C ++ из QML

Сообщение Anonymous »

Я пытаюсь сделать небольшую программу с QT. У меня есть main.cpp со следующим кодом:

Код: Выделить всё

#include 
#include "qmlapplicationviewer.h"

Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer app(createApplication(argc, argv));

QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/tw_looptijden_berekenen/main.qml"));
viewer.showExpanded();

return app->exec();
}

int reken_tijden_uit(){
return true;
}
И у меня есть файл .qml :

Код: Выделить всё

import QtQuick 1.1

Rectangle {
width: 360
height: 360
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
Qt.quit();
}
}
}
Теперь, когда я нажимаю на mousearea , программа уходит. Я хочу, чтобы она вызывает функцию reken_tijden_uit в main.cpp файл.
Я много гуглил и искал на этом сайте. Я нашел пару ответов, но я не получил ни одного работы. PrettyPrint-Override ">

Код: Выделить всё

#ifndef EIGEN_FUNCTION_HEADER_H
#define EIGEN_FUNCTION_HEADER_H

class MyObject : public QObject{
Q_OBJECT
public:
explicit MyObject (QObject* parent = 0) : QObject(parent) {}
Q_INVOKABLE int reken_tijden_uit(){
return 1;
}
};

#endif // EIGEN_FUNCTION_HEADER_H
< /code>
main.cpp
:
#include
#include "qmlapplicationviewer.h"
#include "eigen_function_header.h"

QScopedPointer app(createApplication(argc, argv));

qmlRegisterType("com.myself", 1, 0, "MyObject");

Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer app(createApplication(argc, argv));

QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/tw_looptijden_berekenen/main.qml"));
viewer.showExpanded();

return app->exec();
}
< /code>
and the QML file:
import QtQuick 1.1
import com.myself 1.0

Rectangle {
width: 360
height: 360
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
MyObject {
id: myobject
}
MouseArea {
anchors.fill: parent
onClicked: {
myobject.reken_tijden_uit()
}
}
}
< /code>
And the errors are as follow:
D:\*\main.cpp:6: error: 'argc' was not declared in this scope
D:\*\main.cpp:6: error: 'argv' was not declared in this scope
D:\*\main.cpp:8: error: expected constructor, destructor, or type conversion before '

Подробнее здесь: https://stackoverflow.com/questions/950 ... n-from-qml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»