您正在更改 qml 的几何形状,而不是查看器。为此:
- 查看器的几何形状可以使用您在主函数中创建的 QmlApplicationViewer 对象进行更改。
- 但是该对象是 C++ 中的,因此您需要向 qml 公开一个 C++ 函数,并在单击此按钮时调用该函数。
脚步:
- 创建一个类并将在 main.cpp 中创建的应用程序查看器对象存储在该类中以供进一步调用。
- 将此类中的函数公开给 qml。该函数应该能够使用存储在类中的应用程序查看器对象来修改大小。
- 单击 qml 矩形时,调用此函数。
主文件
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include "qdeclarativecontext.h"
#include "myclass.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QmlApplicationViewer *viewer = new QmlApplicationViewer();
MyClass myClassObject(viewer);
viewer->rootContext()->setContextProperty("myViewer", &myClassObject);
viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer->setMainQmlFile(QLatin1String("qml/untitled/main.qml"));
viewer->showExpanded();
return app.exec();
}
我的班级.h
#ifndef MYCLASS_H
#define MYCLASS_H
#include "qmlapplicationviewer.h"
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass( QmlApplicationViewer * p ) { internalViewer = p ; }
Q_INVOKABLE void viewerResize(int x, int y, int length, int breadth)
{
internalViewer->setGeometry(internalViewer->x(),internalViewer->y(),length,breadth);
}
private:
QmlApplicationViewer *internalViewer;
};
#endif // MYCLASS_H
main.qml
import QtQuick 1.0
Rectangle {
width: 360
height: 360
Text {
text: "Hello World"
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked:
{
myViewer.viewerResize(0,0,110,110)
}
}
}