Qt5学习(2)
1.学习了qt quick application
这是一种跟application不同的设计方式。主要就是靠“拖拖拽拽”,然后设置属性(颜色,大小),布局(margins等),然后要注意控件的从属关系。总体来说操作简单,但是花样较少。
2.学习了将QML object暴露给C++
书上的例子:
头文件
#ifndef N_H #define N_H #include<QObject> #include<QDebug> class N:public QObject {Q_OBJECT public: QObject *myObject; //explicit MyLabel(QObject *parent = 0);如果加上这一句就编译错误,不知道什么原因 Q_INVOKABLE void setMyObject(QObject* obj); }; #endif // N_H
.cpp文件
void N::setMyObject(QObject* obj) { // Set the object pointer myObject = obj; myObject->setProperty("visible", QVariant(true)); myObject->setProperty("text", QVariant("Bye bye world!")); }
然后main文件:
#include <QGuiApplication> #include <QQmlApplicationEngine> #include<QtQml> #include"n.h" int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); qmlRegisterType<N>("NN", 1, 0, "N"); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); }
最后是main.qml内:
import QtQuick 2.2 import QtQuick.Window 2.1 import NN 1.0 Window { visible: true width: 360 height: 360 MouseArea { anchors.fill: parent onClicked: { Qt.quit(); } } N { id:littleN; } Text { id:sha; text: qsTr("Hello World") anchors.centerIn: parent Component.onCompleted: { littleN.setMyObject(sha); } } }
除了这样设置属性之外,还介绍了函数的调用,可是没有看懂。。。那就以后再看吧:)
也就是这个函数的用法:
QMetaObject::invokeMethod