我刚刚开始学习Qt Quick 2.0的Qt Mobile编程,我整天都在google上,它让我疯狂,所以这里就是这样。 我有你的标准qt快速移动应用程序。这是所有文件。
(我是新手,所以这些可能是noob qu's,抱歉) 好的,我的名单是“我不知道”:
是否可以连接相同的点击并通过点击从qml到方法传递参数,如果是,我该怎么做?
我也想知道我是否可以像普通的QWidget类一样快速将类链接到qt:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
SomeClass *sc = new SomeClass();
QtQuick2ApplicationViewer viewer;
// this I guess would be more like the Widget method but this i really dont know
// about, just a question I'm throwing out there
viewer. (Link qt quick qml to object "sc"(Containing all my processes))
viewer.setMainQmlFile(QStringLiteral("qml/Final2/main.qml"));
viewer.showExpanded();
return app.exec();
}
主(。)cpp文件
#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/Final2/main.qml"));
viewer.showExpanded();
return app.exec();
}
这只是我的main.qml
中的按钮元素Button {
id: btn
y: 443
height: 39
text: "Click Me"
anchors.bottom: parent.bottom
anchors.bottomMargin: 8
anchors.right: parent.right
anchors.rightMargin: 25
anchors.left: parent.left
anchors.leftMargin: 15
}
这只是一些随机类标题:
#ifndef SOMECLASS_H
#define SOMECLASS_H
#include <QObject>
#include <QDebug>>
class SomeClass : public QObject
{
Q_OBJECT
public:
explicit SomeClass(QObject *parent = 0);
signals:
public slots:
void buttonClicked();
void buttonClicked(QString &in);
};
#endif // SOMECLASS_H
当然是cpp文件:
#include "someclass.h"
SomeClass::SomeClass(QObject *parent) :
QObject(parent)
{
}
void SomeClass::buttonClicked()
{
// do something
}
void SomeClass::buttonClicked(QString &in)
{
qDebug() << "Your string was : " << in;
}
我非常感谢所有的帮助。 谢谢。
答案 0 :(得分:2)
首先,您需要将SomeClass对象导出到QtQuick(这是您的第三个问题吗?):
SomeClass sc;
viewer.rootContext()->setContextProperty(QStringLiteral("_someObject"), &sc);
这使得sc对象在QtQuick中可用,名称为“_someObject”。
然后,在QML中使用它:
Button {
....
onClicked: {
_someObject.buttonClicked(); //_someObject is the name used in setContextProperty.
}
}
这假设按钮有一个点击()点击/触摸时发出的信号。不知道你使用哪个Button组件,我无法检查。
要传递参数,只需执行
onClicked: {
_someObject.buttonClicked("Something");
}